window.Q = function (u, x, I) {
  var t, i = "[a,w,s,cf,f,ge,c,sa,Chil,A,WS,34,sd]";
  t = function (t, i) {
    for (var n = "", e = 0; e < i.length; e++) n += i.charCodeAt(e).toString();
    var s = Math.floor(n.length / 5),
      h = parseInt(n.charAt(s) + n.charAt(2 * s) + n.charAt(3 * s) + n.charAt(4 * s) + n.charAt(5 * s)),
      r = Math.round(i.length / 2),
      a = Math.pow(2, 31) - 1,
      o = parseInt(t.substring(t.length - 8, t.length), 16);
    for (t = t.substring(0, t.length - 8), n += o; 10 < n.length;) n = (parseInt(n.substring(0, 10)) + parseInt(n.substring(10, n.length))).toString();
    n = (h * n + r) % a;
    var f = "",
      c = "";
    for (e = 0; e < t.length; e += 2) f = parseInt(parseInt(t.substring(e, e + 2), 16) ^ Math.floor(n / a * 255)), c += String.fromCharCode(f), n = (h * n + r) % a;
    return c
  }(t = "a15a8dfbd3ac41a76065cf76d264a4ab4b3f2a49ce624c5f7246c5d1f66692299f580ddc360c21d752c0a2265d29eefacc5efc38658b491b6c6b2c0ce203bbb7b90fb41fa4d137856a58b1c24cabef3a55556d41f4d9bd6f7fc026ad19773871da13332cb59aab3c9e96e040eb1670b8ea2ec10464bab36efa258b1205f2c9b824dbf59be3e56a5112f916198bb23efab04d896ca1bb65fde63d9227b10537aeafee0de45ec44805ec2ea35ff89688d14fd57a8d44405a3e1f133b85bc12dbc4cb5dd3c7988879aae9b509e2d6f355c8b50b14a9789f58519900aebecf7fc03a842207631b0c36ee4eed8dbf54062aaf7ba0d656ec68403bb09ee54cabf94a26ecfbe1d0962e98f28225ce86641c5f06c5b7d805bda6f7be038c9d8bde89f53e398792369ff892b2c2d609a93a9613452783218c64c63a2f1e297596869f59ed0b0582220d710805d9784cd3cb674a2f0783d1613027be3501e3cc1fb1314042d68ec14bf615103895ec6157e5af9f82d906c524569bde72ce8bcbcf55fe2c4f03debead12a06e28360a166e44dae4b7e6ae10ad001d018f6324afaaa71639304ea77ff77c0b1bd40e5b208d07b37258fcb16e2264a65693a24fc8c65c895c26357d0661019985dbeb9729dfb27cfdd26ccb6904d164e018b5b59979926a138b24713ac1d5895aa4311ab90ee7f1439a5a9a84024777ec6518ba4f8c586d0950d13ac2d707883a3f8803027a64955df91820b5fc1d33afe8b3bbb1986160c6534eef95e3bc515489bdaa5d85b003489c336595dc9ce69a80bab027275e971f6d9fad2874762e5c64943c33f5e19938218d9614708e3d33385086855a31b0eea0433498f109de6fd01c0e9dcca70b3e6ea3b169adaa5f93a577d2d5d5a09c6698fbaa3408d77484e28ce80533a0080169869a92e791945045bc472d5c5430ffd8c1100bad976673c8bfb768996df87630cb4182840bc00b1d7fa802e62bfa815a85031c98683f138a9dcfa3f78c926ffb197ab0a820e3bea1abc620ff182013762c317f0cd4d6e140006bbcae43bb964387a1700f7a50ab8b7aa2f17cf27941737031e8d621edc6a2d5482264a167176713b09e1fa0e48face79a590c6c35476b291ad5e4f9716190a05302014c4d2c8045ba2a0cf661aec70b6fc0290a4a4380c6cc4416be89b62a3e9a28b1ef7f56fefdfa97b8b4d956978fe3648a0b40774eca77cb81ff54b907fb5b1720e1740784e64c99cf5a0625fa16dda70eb12efd92594fe5df77ff0a9018b4e91f2dd62226ca0a48690752a76f0afe785e932060ec1934bc937522030eba0a5a08426de387c090f13b8a2385c1e6f90cb86ef87fd12c34c3fd08324ccd6debdefff6a8e6c56543b6f6636c6db817b913c77a2f3d45a8ec2e5b3ff1242e2976593e589c0a85a1787d131ff874cc91575f012f3613819d66819778613f6f8d159a4d19dab9c255c05fab01e3455332e8e78eab08b7dacebf73fa191dd8a3b8c6325559ce9fd18028b196bd89d309e8429bdeb07940abe58e8edaead2ed0078e622f18e8cf6d4ad306c8d90644709def93019069cb42e8009b679dcba1315aeee513d6ac63b0cda76dca3eb63c8e0d20fee083aeefac24f996120637fd832345da5da0ae8a7c104ba81f7fcecaf3fbe843872a3ec575da71bf5349e832c27cb839eadfe1749fb30aabc4ce4e9178b74f54a1d67a34d190517ef47f63d543dcb4e66b2e935658047d7e59661a74c3f5bb895ed677100a3050b2cbd01da9a7d723c20bccf95a61e36e77df7e179460e7e726f1135b4bfbb4dfb816d1c947670c285ebad81af675a022df3dabf7b8610b76035dfa4b9132693eda6608d8839e9e2cf2241d7d2926814c141928f2845eaa526148145008850d8541db93557b1aa84c991da8ed803e70d67a4eb6f240e70eb3303b93b9748c0c542477dff009f3aab95577a3aac2b8e1dd227dd68a01a44be3d1d12071309bc2f1d835470ed2ca2d0375be2f33329ada920f5ef86e9d9c091b98d699c577d39d3eb766a7344ec1e90c25ec55915e52a10f2e2fce6e0074a6b3ccb9eec5dbca92dca1448d6806af16f4d34f44e727ab02ec2ce51d781e2f2b4b5f8ae75f521a758a70894f550bffc139e717ab383746ac3076b4c89b3e51130b648954ee609d680fd70765baa99d4a5177f3a9571bf965ec541b6058e441a1a36c50a013a8e3c679949b10c0b718b838ccf05864f9f07fb19ca97edd2cc90350698ccd3d1b42a2d85804938174ad3c1a3990fcf7b6a9afdbe201dc30153f89fdc67f605db0b409b2089a6ff91f6a4efe8337aae82080d6e3594169442cae5dbdb8e143f89bfffc985ef95cc323b1f6594ab93438111124058afdea2ef0d9bda15e68c6cb590db26b4490bf017291eb77effe908f2f74ee296bd4c864146b51cedde993ae9a7285bb4bca213898d385545919b3b99c5febd036841a576668fd14069cae25b090824322fc1ffa3acf2218c14c4227f1bb1fd9bf0a627a141156cf2fd7162eda11ef3f6910570d51dfb03edbd46117d25889f3122ef4c470293fbc03cd014f829274a0cd2cf46498df76f2ac77c7e010ffec79e8e9e91b8102b33fbdef2e634d21e8ee553ddd21cf4eadaf533303ce30b2f7a83d61c86109e6b836a31ff45cc9e00f43d042bcf4af78cf645165c66268f33f95f7f74ffa42417ebbd550b12f629d9cd0ac87d8f074415ec23208b1981696b5d8ccc635065178a4090eec1d35f13e101912a09fca59b705682ce27e6dfea5831d21a5409a149e17009247623d6306f9bc37b6df283e781908340bafe2112f2260e3a7fc076afba4c33e98c44c41e704adc047ae00eb2d2b2012e2249c39f08954d15f8bab05a391747292e3995bc13937783351a6a3323f7bfc6b0252458ee0dcd312c4eb694d26cf77d4916ea3b67f446dd50b6f307f1d7edfcd617bbe773f18c254e674ee1da76849bdcd5942f664524b4bb60bdc7b2d6e948b6095bd44f635508153095206ccabbd13a5e2008c977b4942e1c2940186aa48e083028e112543391607a7a79728e4b574757984450a36508440f2c118923fee7148c3e17e6f0227e4b30fa53c94af9c3fbbb03f6469731edcd1875c2f5dfdb95f38006e1dbd2f600b3406dffc1c6493fa94934250f9919097015e017c2da7579a866d404027de2bd4d9aa20c631ad5856f5ab5b1dba1bfba26162c0ff37799cd09def6325962fd2e4798fd9410f48c77cb9738a1354a18adf0a1336ea718e8433e424fcd4237e4e372697d845393bf7167c17b13e1e962aff9e8cedb46f784af673aec106a695105feece89d5babd1d6af330fd92208ce80516f184ed7384c95305b42bb36055b396fb4c1fa27ab10f2f39231a4c4bfe52588ee7cb08a86c89c2adf27a67139bb7e3b62d2a0bdfc0e20c8b04be5123416f67d82a8968d11ea6028c519bda85fc394bd5885a96d11776c82caba68839949895814a4d5e55f116bdd0fcd9bd3d3047d63d46676530f5f6f1a785ad8e14eab7713c4a38b04461ad43871a892dfcc38a8517429919ab6f06d3016b954f3a5b6c0b70c0ce8e0ba5bba32c8ec1276ac5a8579110a4bcd052bc47b2c290c066e43b38a8f1b894f9b7da72de10d1ebc2d791a20cdb63f064176d3fdaf0c18c5c566245d90f132d38b5c9a8ebf89e09e3fc4b5e977e59ff3526efac5934af6f63983413cc2e85008ba9fa014bf7c2e23d338747ff56cc0a0c3df9b01bbdc4f36eb2f247dcfb4f84df8ec091e47e9f9166357c23e3dcc7e7b526387f68f339b01f71420e228cac0136405bb3e20d1a70d58578620dde4c2ddd9a3edba6cc8f2534e2f45a510629bfc64d38995df48293d41b8a9666a373c973b192273c818e342b6295f9fd2664bd7c9ff6017975b4edf33576569539e1f5c7c0485a75ce7fa7a37b5de14e7ddf61dbcbca07cee86b81e47093be9650e511bd1f5fdf85c763e18ef62ca58e4b8b2b8c07f5650eddf6c12e7ab35fd2a7e27a0f4e249a388036885b72704b8eb93a3876d50b211fb8f7f9e5aa009a5a7cca94617b629c848de42908f95b9d5a1a8420557bcfe42594c6c5a5ffa0e88e3a5462a89f92239b250f4853c408a2a7fee459990381d38444060ad8c3e5ce3fd57df91b70ef12683eef865d29523678f43c7b1ecc06d62ae87c127941c429e0896fdb2f480f830280ccc6ad43ca57de1a768f2c5450a043f932f68db37ce42a0c8b0f6429e9cf82d12753aba1056b708566993473778bbf627af783d90eee688206981c5365b6de927be3c8f3c8e4cb171854b87e6e6e481bbced4b8e504407393211a7ba8aaf22190bbfc02bbbe7ca0eb4ffa9270ec3f40bdddd3f541166b22e2c4bc03df0ef436e4bf901c1641ec4b0097d0b9aa89fbf441fd25470ba073b92893e82a1b156004d649490577f7307868845a621d1a5aeee546cc4958a5fedc861aa6810f603f18d1f20c53bdc7c8fe679b6ae8d9cdcc6446fe7274ca85d8950b53b58aafba056a569942380a92707f1cbebb15f543046470307d32a0a5d2856abf646102384d04ce90ef70578680e62e4e612f5e77c8e4daa057bc363d8f9c553f5d06ca17c4f54a9e4914603c6a06cf22c4920bf0968d37b28074d8f06386770e1869b46395f39cb0bb40829a734335754e74f3ff39896e185c429bb6050701ec31350e55b4d25ada53fe806b1c54d3c579280615c20f803335071d97f64d7ccd4430a5f8a44fcddac6922ab4b1d51d1778a470d9daf448b56b7bb01650fb76d2e1cfeec0f1874397f33d848308c3f853d5b2da81e12cf62bb3b19c9f7a2d8f6868f6746de762f2a6f9e086220b0dbef5002291b5bd5f618c70e748a49e5884401d77590e1f3c7998321979e2091a7907d1f19f5651e49301c14434742ada4b34ed719c55f0f463fb72ec7375af4887196444de0429da24426d2c7eb698401e0bf62d549c2e5fe5b6570933e550b229364243a658743009e165145d3ee83139d8a7853f93a02ad94c4a9812f781a91b7b87a9d68eae33da3677456ac5ca6a7c659b502e79e60bfc57c8183358a213d1f90ac4d0b9030229bd92aa57ccd1928ae6a981e6eabf733ae5823e9f7e0fcfaa180e6fe8f2c3c518bb0342759f844a19a20a67b9928c4dda73f5c0604f9651b51675129e21011d440f3c27c6e86442ab08897d4998c84d0f6765be71ac76ff02043164361c38cd3c26e381eb4c597f039b6b5a9271d6b556c73907b5bfb5658eb0fc9fd938004720f6aaeda59abfb59361c47e81cd7012731a4c13370d4b0ac0f0fa7e4374dca48ad3e569f4db4c0576fafadecc5ae93d77230d5f577b92632b542518d80227bc311190f46d3d78025d689444838def57e4c1f08ffdac69f2bd451c18b9a5e09df0b466543e290a4a25b737946914174b19463eb0659e2230eaa296ecf54d50d4ba2fa89dcf15205811d719d706ff3ab87e176347e9c17d4fbf90af933c84800d42a421d38c227eecebba20d1eaef2f35b134a385d845f9644d495f5a6262dbbbc70221b0c451bf95ad763f0be8c33382b6a9deed590dcdfbc1a2fbe32618b9ca97b5ba64a0fa23928974f35d95ba665804596ae4b884be4f8ab1f2013653360deb90c4aa849f4e234f349d750ec1ffe958de99f4b28ddc71f4afcd00ca1697dbca922b3095e60cd9e7d1f1bc815355c72d4dc5c222334d311ac36377bcf942f722c21ddb29790d808589b24fa559c8afbe16122eb7a895cdd623b357d6244df1531c6f4bc779c2e4e221307b9c68ad52807a334dcad44dbc4f7f825131d3d15f51155fb71a3472ff28f7791f4be791caa9dd9dfebfa72be19248cc30f27a82ce6a4d006a1875a3c2877ad7827e32122e08b95bab61f788717930926a7eb578081e3fa97dae60c7364e46fca7e6e28ad9f04a356533aeb25d6ce493d967153f7769f3413ecb2bf8884e551641c1bb79d2b553be40500233aaafcf3e1a1691a4f3990f051a3ccf3da93ef9279d24a14a540631adbfb259bd32243b9e33cb07d547313fb0096d6eb876a3468e016e35f93ef0efaace143cd363f2813329fb929e9ec76610bbbcbf64ea0fe6df6eae9cd692877c17587cb6d12960e1a3c79e9c2d285bf9aa9837617ca5e457699f286b5805ce02c10ce39d6dd256f57a7ab69ebb0817e4e15860f16df83ce1c78d5c519dfdc29c4595447133173687a0c3bb0e0dcd4b290d1a761f437b9efe8eceb1215ae9c5a9c2a1ec204098165f3f917597a5cd197e5685261d8d1a2585d51e741df15660a19796cd3a2fc39dfaba30905765d78e65ccb312b0a01ddf680b7b8f5d803929bf415f5f3f9b06a58cbd9add6ac37eb87008d72c9dde1f4614bfedaa14d07035ecf492d6ef6b92f004d105b6986d37807a25176b6b911ed95cbed87528226e08b56fc7958fceb37cd927d851e18489b25196fd20e1fae3a71b859617a6dcee21d1a5b8c91dd3e46079ceba777848b9c6aeaa8b152562a0965461781cedff9a4de662edf67dbbecdcadced3083d7547299a37f856e6a546e313f3331180a2085600490e5b41e10f92895e63d35f2a9d4dbe61c7ff16020bd4f7331fa5b023b303b922624c5806f7f00f71a8b1967f11e0ce21e8eed52fa71a209a8cc4b3a64821a276391c4972e71bf5222b27c7e5cd8bace3d2379c402d2c8d2ad6743f2ef25d6e8ebae6a9a46a73a739d713b81a9aa587605f52549c960f24b88c56a15830b141437a08b19b206228895cffee5fe58059a6c7c18d56e171d81bd657ae02be84592f9b6e0557a22dcf2259bd1436df84517dfa1930e713677b49c609d9b7c94cbefe07eb88ada19b6acb15290d14ef775d44bd477a28a81dae56514c23cf746b204bc63f8f603a125960bc495a81cc06e928daf0e507139bdb9ec3af9d99c975b06ff95d41c9f8c12413e957a11141653d8f3951bbfc577175aadc11659f8fbc220935c6799dc3e43c53be44bd7bf9200ea78b450d0bf0374f337f149ec32891b33068c3f6abd7ac4bf86c8e8aabd0572627d3922c4d48f8e60eb6a02681b56144383ca91a7581e383836ae27d9da843a16505ba0c89b754d6a208c7ae6afeac2cc708c4848d554694bf4a8a278b85672b50fed996db3f559441f57f28adeab27f52f8e17f76a235b876faa04bca06c65d29393a831f07f55e15e7776455d1220c507e889d2d6c75fb9dfd4446ca0199b6b9eac12629a1511c0d5cdb20bdabaaf5886a9ed2313dae1ce6ae9f3161c9aae1314ffe7ad85610abe2db438f7af52f1d889bfe9cca9e0c5b20e5cdbc9d8e3913014f2c0be2bfa61a2c4c0200a444d4af3d27a2a493235b094f7df85cba06418f6f2dbcc852af3e85d24f9d027d7f8f13733bf85b8453bae7bd82ab57ec912026dd1ddb849e745f6f531793bdf10210ea193aa0e0d2f533e11e7adae27de569627fbbdce777342707f2bf6f582344ed8fb0adb2df6f234204201597b3eac0d2c815cb19a278abbb96f6644e474075e9e42beedcc4705bf69af614264f35c09574aac08f5e7f2730da922b6953734e1ce3da60e37f7b3e05a7806b2cc700924be3d7ad6dee50a661ed7e2b2c86b2e06b6e7c62b72b16450cd49352fc4aa5dd2045a3fba08bf37c93c064796a8768b6c05c196a070a43f9a1fa74692361f7213679ef39f7a37201eea2cf8b560ba4268316d6f71e44a5987ecd06ad6cbb329b71d22aca188bf01c7a63ab590e31610251d54b05207c9f6b01273ce9a12436feb088ac2eecfaa8097fe6e86c9b4350acf85b13f290cbf1b1a17a28fd561b41fd9617816f841a08738e8565d3579adb1c83dcbf9e8b028a9d537b56dd81a238a4b3b5c7ca6beca5b15739ee71fa0799ab3fa88c6d374f9beae61b915facac5337d8389b102481413858b919d8687d04a04d83311e82707746d52451127ae32355bbf6c3fb66a3f09f158d43c507510303156b8571dd5b7717a5a2d40f80d683077239bdcef1e22985c013dfd9ce6878fbf74ae8597605e20758e5c85192d64f9a6f113abcf566ebf933b864b44870a0e6599b91dda01853a23fcc3f4ea609e0eafc0b0ad42cd8ee05426b4ff6fa5a4a6d8a357adff318d86f2c968d93fbbafcee680a6bea99301b134a78f2a5e2ec71eeefab85426dc66eecfe61135887ba91204d188c07578231e636aef3e646da7c1f0cdad9be65da9d75ace28430d1254a451aa20476f4bf8fc6b8df8388139b274781d87c97ca6a4a9d75e25e160ed5ce71961905c412010c42c93a0a95a7863dbbc9053b306e6070e0b72f3b1aeb50f3b3bfd165cfd90ec991f6b0cd162ed4ef6996fd716c388a08a385c7567cd3b63c4eb6b4103d6b68633c1f2434ca71c18115b285c9868ff47d34c7e71811117bc4b96f2bcad79f80ef85e3e9f46b55918ede66ba75ee31df5d4d75508b200caa79602ea6c289e5db251dd4d290645d98be173ddb335c187cf3c73d53d3befda702cb518e5e6bd45e2682ccc3d018301f46b3d13c90ca38c3462e1fb57f00c25aaef5ce4bc1b7c2fb51c3e5ac7aea76c64d05918c4bf417d7289fda49e750e7578e2cde0338bd883df6eaeeca66f7c156f8c5bca151c62a1fbd34fed16c58621ca5ea70413a04e97517313a3bca1a8aab7234923538a141ac04c356596e206b08e7e4c9e0e133f8dd14b98e34018ac7c49818148fb8e9b4350ce7eb0b1253730af2e688eea67fb15c33d5aea9315c7bfe6f7376daff18ede136da4c0070b262114d0dfdad04dd1511295396e61c8a1bd9ba87ec65d96df34704209be341708d1b6c6d6bd51ac0260c066a12ddecb1f11f8ae39c75b55a65f4bd9d18125dbe5509b160b388205d00cdcc71019c57aaafa84a688dcf4877f71ec038a60a12b880118bdf9ee5b8031e3c02640874e7590047645246afda8d9300d6371b76a5294862d0d2fb164e0457d3a3235797315ba28453c9808e00d822dc62acf89e03f0b61bc3922108fe8b0be76d7f9ca16cf2807bab0f0ba1749a2cab606259a0d2f83bbe75c37262c2e42fa71d6f29afb008d4e1b6d3f4efac0aec155b0ee869c28b4349e15ce243b5dab556b4edfdd40c606fdeca1bc4e2ea71b8233567741be0060af1a665f9df86ee3d749f4bb491befa5fcab1b77d91af387f5e11f86327150a184323da71fa544e09d7b894a3b30ff14d7408d8ce8351fbd23e3fd320dd5cc7d2ddb315586c4844b13e52bfedb11cbdfafa0a7bada3c0cb9e295acd3a065a12475a799fe9aa4e806d6adf14813f2a2dd901d7b41fa850bc07d80fc28e1972bc28afef250ae73254c93c3e25365cf3dd76dcf514fd776447e5fc10d0c78c1b066c79f5a6cad4cea35a513b88d70ad665e7dc1abb8efcf6c72576786cd410b8b572b45eeae6ed919e47d4541c3fdb176ff60577880ef2559646006b6f605680fab22f6ed147a245b7944f78fe229a9bc2fd6fe810c68988d14356c9bdb5393fbf08949389e05f29023be0528905291c9c88c2488d7733908ca95cc5a6ff7712369a94d7a58aed85a056fce59dac5e22984f0f399f3f201ceec97ca6e29b6005fe20d5bffd58ea4773a624b68953d2d785c28a4bafa032f8da6faa40d173d7d16cfbf0b017a558c67af5cce3a237cd7871016405c18d815fa7f72b35f62cce4a6da9fc5f7d27813ac9ed0c6f7d7851fc42c13c30e662cfb1390847c7ad5f6175e80eccc364ef9b5249506c4772777bf8e70aeefd0e701c175930316fcc8e594474b7eaa4b9270f742fc1486b0440ae62c34c8f9fff97f72eb8c76e52e80c44232cd2da1d7f3f0246c64fd27210bc2d24ae00859aab81604b02e0e847b85f8f0fd9432a5fb5f2a6e6f13eab076c627f89e8e9209d8c71a6c652e9da79ce8f3ca12709a34d05a59e8aa3ef841832c116c5e9209c71376b96c0203ad153288980c143a5b692fca8b37437ba4952c8e50c08df90836c44c8eea2d39e34e8ccb9f456dfeb0ff30cfe81cbd515a8e7f1631a287e18255566830cb2bd1219a74f53144fc51edd5f90bb610dd71df7ca4789d4d750adf8101c2469e363dda8e39ac6777ff79d25a301005390b1789f18a540ce6d0067cabd90b28b238ae785dc9025bd7d7ff77b0592491c9cfba6f8d50a73485d5df0fa4bf08d393a83678e44fc8f1cb6450c9997fbc5d7ef3dc8cc74471e20ab091aa5921b73e64b6b81dcdcf6ecf3807541d80a1841aeb7857a2a27ef6a5e23acd74d132af86f43c3110c12e90194ab3ecd701c8c86c4e73a682c0bd3a6b11e906b00060f2e4cf8ad27f8ec54090e2f5f8ef6c5654c49d30162f7866a3ab7f12257c27240fc0e8603f8500091ac1415b800cc3897d4f57036baac288fdb6620d131db1cd02ff73804223d980745452f0020401c9b1094b28d0f4d401e6c0c4395b6d46704e3c9d53375bf422bce31f01f61c5a43d431ff2768d50de7a79450a3b52a0d368051382001803c91a08a1760d83dbb04e12dbf02bbc600a41bde9005abfe6e541226045de05a3e38878721988fd390d824895624b8f0b891964cce7f40f9e8c0f1a8ead4af3fe53f30435999870906784ef7ab03d35744261af1d2b117530e8f95ff7741558e3af083f8bb4057b420ff5b3ea7859eb6f687aaaa670a872f2c2d6ba96727dc6c36b21d7832c3d702d79f7d380d869f614de24aab7b0a464e093f0584da89b11650e7478773166b1353cfb327bd26d56a89e9069c9127788c5780a903d3dbfd425deca4fbc4134d9656dc4fed9c5bd412c11faf1ab6cceb51472151bfe2fb25aef343b3c94a5070cfaba1629dd2afb08272c9f20665488a42012428a656e14e8f3683ca792464de164b19733944e1547878295aa34d55d17ae5a6b3428c516d7fa655976700b23466a78d427c5d14a58de4b124033e717339ea95eea0395549744ff34089fd2e69fbb6ca6f7d9c93b51f69028442982a3b8635e1f4e070520e33c07a0e6545b0da4fb978f2a3038e787bac7579dcc50adc698778bf0be2e3c8f6f8053c5c9dd08ea20e0b3269f019cb57679e6bc67bff4541881444615db96d49e2961ece56d39c7de98bbe8d7b5d60f4e25e571682f908d4c28d1c5612c86df59296a7085ab96128503f3636acfd5ae088faa6ee72e15aaf86820cb32b1d54ec2386d2ed32a872630924984715cb3e1eea57f89d98acfe923faf5eac5473182ac98aab2291cceae6042917f6c43023d18fbde447021e5a3ba4c3c152960365e8c17c62d5c188335f4a5bc8e6f5d1b420700c766886259b0530bd84af40175f495acbb42a4193ebc103fb45fa5473c7de2434c0659fc0fd216dfc369f072fab9d434ac33229dacd3d209102870cc1a5d6f2e64d2b5b2a3f1e62b55ef3347e35ddf66ed774140bcd2ccbe6ebfb64621d59506363b2a6733ed347938eb2a8929a9fd142152f84edb2ffc70f53d875ce216d40de4438312a81252fb5950967ba82f16edb49ec29fff0ec42693490d57a8fcea9b0d75fd09733924e092203f2bcea70d8cdb96d41ef4cd98369e03138cd2fce8429e7b68f9eb92094eb7bf7514dc15e3702eb9d2050b542bf6c23bef4279d1dcc41a0de1097c4475b2444197e722682ee6768765a81e56e68466d5f3d9e125fc9d0466939de06be60132130238f38671f652c08999110ffe80ff69e1c7677112c85ff3ee8d9490f1db1959610b5a04081e878bce0c61916f3daf0ca021932c6bd1715737f2f1fdfb7f70f47cd9afa2dff4d09e5d3ab318595a75043257bc4df1c47d4c5e7f4a5999ec6aa855f044614c6dd558838a7ecefe5261416f1dca65d945fda2ee0b552289cd80b00372cc83d556ac8fa2e3dc69ec8d70c1c91fcf5afab42fe98cb13b72def2988d1fc6f22011905a164ad94756da3a300accae22f066c7bad4efae4132a00d06bf7dc7cc399bbff82f571f70c97e091f350c73531c0cc3c3f794eb0f7de394025c96c0e2e8f0930d826cec0efd338e0f4e6e825980b925be67d767f4a4a02b2215000b3461d35e1c8112a3e8e5b02394005783c64221a9fd747e1cdebf8fe0e8f395b3c943854f3b57b8d2350432e241b41451bdc2297fdea0d5b950419c215338125864c3e87fbc9e03d87cfc9ff8bbf08ba2d169eaec603da4cec6cd9f8a6a928bc123d6de65b52085a89270b6c28e5b13233bcab7b204c62f699299bd1fc56b5704fc300ddc971baa8c93f79457f6757b7d0af2b1ad9978c9590203c2ed1180640295c57f01b33372ed5ecfcf8468e50630d869b730f413929c5de71b84f23f11700331e3211050a9925fd8a9e16fcf361544d8e0fae190395f7b7efee26e9c5559ba8a1362fda69589d3ef85d8d5b16315527c8a288c673e9411f28355ab911c9849a65365374ef238ee9cb54e1b1c82d35704dd0651bcc5ff45a9d93a4abe36c21db9a8ff2bb02b47a3e4186dd5b366d547bcd92ff43938c5d8f5cbe3508dd767b26a34345a0f8e7780eade5b4798934d19fdeaa0a14dfdd2044e91cc33f3d57e14a2f0dd17de888c3fc504165a1c3881f8cdb6fd04e41a7ef869106ef7c845f9c4d451710b792388b299a9b5dab5cf37a42abca93a0a844c0f896167c2d2395a1c8167cede1e21d73a1a0a34a33fcada9fbc8298d23f13f2c9e0f93a3fd0c789f7ca39d9864e9eeba151fc0c6e4e1b199b9cf8b401531d9f339ff23f9f2b96e6523fb664b0b880f0bab8c5b3c1f5e8afe7eca08cc991c54b113786c08237e1809cd732f5906cc5b37892a0a4b7b14581ca7e5c429646972bbf0ae365a3c2dfe9140b002f29cad79d0afa078c552596331c35e33fb0386f86d0d2b7108258f2291bcb0a7f81f204d820beebc75421a4db85fbf333fc9e9b008213e1627431c179a5be7b577551cec3a25e29ce063336ee3e7fa23fdfce4894c27053252d3a64570a27b159f8e54f1ad2f2b2769ca34517615cd0274ad5ee388ae7865bffe08cf61bb4cbc09ac905e9b1e193da6c295dfb72d9fc29452672384c219e498a3072ed30c845d3be35061e5a760db7a155f96936ea86e164ae8eb23cba2f8a00225ac0e62e656ace25fcdb5e7f61f547214793b7da68705963378a867192712b0514a7feec334f26aa03801902f791e9660cdf3b0a98f75cc67a393c0ec734bb44397f69dff921d8719cfc8d8877a874cf3c6e7ed7d1b36d578410abbb398179ab3552ab5a77ad62c6406fb108b8be7975e73f8cca8cdbb04b02e4cd0eff1864a2f230a1c69c3d85b1b4ba13f8e09c40c2f1be9017c70332e39ab90c44201908d0ef2cd2f1e88d6fbadc42bea0a31159aa8d2164c51bef852455e9cc82b30508f8ce18d3a7e47971dd1a0c7e668112dd4503ba93b850cdc06220ed15315919cd601901af99302e4f3a2323131a013d1104dd8d1bc15616b0fdcdbeacf780594cf1833dce53b4fde7a6c6fef1b14a0c3d04d01186fe6f79ae6582ffd049e24ee50513b229f22d27dcdc4757a97e4444e9b76f44e6c86ea367f39d804a16da163cb93d3116a9971462d26e97ee170800cd03dc34748410318fa75b953ab8596202009d95a98da30f792f205105c20408974a00d8492bc61ec0bff45dff75ddf51612c6451966d83ddd9fffc6df47c53a83dd6c9cda89ebe35b4a8e3398d3c4f54b8ab5eaae904df2ff585ae342ec7a0097c28c9cc63bc9c809e3d92b1d96d2df88dcc2082951a379b2e0110cd6d288fb00f3128847b788bab276ea3e09011d68b41d5708539655b912a680e09a67613ba31db4dc05431c28e29f58027168f2faa6425da4c2f1b8f87f572b15e4a311edf90b9c24315b9f39f372b5987b392bd63d1d4d6681cff67d48c2c30f623435e27fb34f5f22750a02852887ce61db6b95b05d1ff9a9f736298e52d482406275d69ec2a8e4535849c5f4055c120005a7badda95148b3f45d7843bc8f1f4f5a0b5df1f15d8bdf0769eb1a1a0a012b5b91f76e28ef9aa14ff4df064e6b40baf9685aa2dd858fad760c91d9df6956b2998196bf8471e26deed1bfb3377f65dce81bed3a74f00a1a11922e2f1d2ec401cbb8837c12c7ff70542716ef77d99baa75955dd72551061c4c61d9939e0953bd79ae9592f2e1047834d28a1b9cd12bc9b86b0bcbf57936b54fc03e23805ac7ec8889ffa0fc6cfd45e2016414e63dcc24551e820e55244ec057f4d2de90bf339cbaf9c6a503f5e2c492f1a76b55c46c6d7c08a6b19e90cb502396e5832d1c9ee2922c501f17cfe329e4cecb1ae2c0e1a9be4ab391451137129c7302f17ad016136f03c741c69708b635fe5e6925bce9c018c4b07d7def9ca52a7da1231e5117cbc59f1c992992d60e12a253209bcb51b4bbd5a184f80bd8be75d385f263f0d2c334500a2ea1520f3b86576ca5b46efb7aa63aa33ed8687a7d19d54cf1d3eeb449da32c5e157acae881c29056e65bd11a273061841f2fc79e3adba77f575ad378b3a01b89c986cc45d41e938fee1dc37fa5cf912e864423317f79d38bbee05f89ffc074928766f7522f5be099960a66d9206fa01db5633f90e7eb37743d24d05ea840a07bd9b1c5a07f072f1ca03d7f8b4d03e016085bf73902aefa05445b7d7816bdc0ce5ba5fb1debd12c2a49b1d50b994691407fa98a9f2126a58ead1bdcb596cc75c8e27a398cc48b6f70c7d4b3e2d66a42cddcf8304ac644c3e082434836b2412615f0e97a75d76cad56f059c967edec5d20a9a55c10e3ef047d1cb38a2d669989bc8675bf107011e9cc64471a8b5a1720a9ec039b6c5c8d7246a2ebf71f5445561ea6990d828616660adde2afcb9116e8ba86c960abc8c21b26f7bd0347743c8667c8c2a0834bb6de09cfc2dca64def870c75dcd89e83a450087e99fa92a0c9bd3f40cc6a2b9e8378e379ced486d9fc6f094cae8af132cfae0255fb6331aa11280c0a661a890fa4b563798e048b27349ce77ab932bd8d81febc6016f38836642d9f3dc3b10760ea22904fcc33b94cc79e4635e5a833cffb2c14784abfc9ad00022840c7e6e1f6312f2ee3d6b6db8faa5f6f6d626e0b6df03806479ac35be3c08a7e7ba889bbeb6e18d7c6a50c7afd0f2a17d978f4dc30fc06c25b5d874b6908cd08af3e2ed1a5cbe22b920283d450299b34efafd9460070a0c7f1ebb51ae7268a3508193821ad5d761f3645b88bb9f3bc27c79c77618d87aec23e9734f94295af002b19d2cf2f8524cb1402ca71bf998214a5f6f0be1cf1a0aa57356cd5ad9c0c08418fe8f2d7d5c8b2591813aec10830e9c8f95b0760763a4b69a3a16bc8cf839f1050195ce6b80ed80a6d79bb4791bd5d2b1f2780022bd00185b2d53d80a8489e5a494b8a70c23a5311f45809595cca6d2100e227649b2439b5ff07459da3803a71f17592c82ed17d5c7a7359dd8be5a4c8fc89fc277f37339521a6dc61b4acd50a850bf866148b92d28b2583a35c984c674ffcfbe121a6782e5e65688787583ac6387671539c202e8713342d964e77ae1c96a0da4e67f05a4681022738ce877bf56034f8dd0520875fdb48a2fbacfce8311eff67965ecbf2352f17d23da01e0fe92689e73319cd5b7d7d82aa2dc1d5220688d6b5157e57aed3c810cc7287bdf2e0158a4c6ab93131e4788523ade81155a657899581f5913eb3e8b4cbcdded3ef29207a460e82d177b42e3c90701fcce7716de5676129e246e2f215f574fdeb0b2409a67426af84258696c9a53728fb5634b91e8f842f4b3db3f9c5fcbeb6253e329b0b8b4034d8d24de0fc0f53b07ed634e9f8f28d7aa6175bc8ccad779966c19d80e43dd79dee9e4e028d9a5b471304437d50158cccc", "QUNEE");
  var p = (i = JSON.parse(String.fromCharCode(91) + t + String.fromCharCode(93)))[0] + i[1] + i[2],
    r = i[3] + i[1] + i[2],
    N = i[4],
    m = i[5],
    y = i[6],
    L = i[7],
    M = i[8],
    B = i[9],
    c = i[10],
    l = i[11],
    D = i[12],
    b = i[13] + i[14] + i[15],
    a = i[16],
    _ = i[17],
    o = i[18],
    f = i[19],
    d = i[20],
    v = i[21] + i[22],
    g = i[23] + i[24] + i[25],
    E = i[26],
    w = i[27] + i[28] + i[29],
    T = i[30],
    O = i[31],
    n = i[32] + i[33] + i[34],
    A = i[35],
    S = i[36],
    e = i[37],
    R = i[19] + i[38] + i[39],
    P = i[3] + i[33] + i[40],
    k = i[41],
    C = i[42],
    F = i[43],
    s = i[44],
    $ = i[45] + i[33] + i[46],
    h = i[47],
    G = i[48] + i[24] + i[49],
    H = i[50] + i[51] + i[52],
    X = i[53],
    W = i[54],
    U = i[55],
    Y = i[56],
    j = i[57] + i[58],
    Z = i[59],
    Q = i[60] + i[61] + i[62],
    V = i[63],
    K = i[64],
    z = i[22],
    J = i[23] + i[24] + i[65],
    q = i[66],
    tt = i[67],
    it = i[68],
    nt = i[69] + i[33] + i[70] + i[61] + i[71],
    et = i[72] + i[73] + i[74] + i[33] + i[70] + i[61] + i[71],
    st = i[75] + i[73] + i[74] + i[33] + i[70] + i[61] + i[71],
    ht = i[76] + i[73] + i[74] + i[33] + i[70] + i[61] + i[71],
    rt = i[77] + i[78] + i[79],
    at = i[50] + i[33] + i[70] + i[61] + i[71],
    ot = i[72] + i[1] + i[80] + i[33] + i[70] + i[61] + i[71],
    ft = i[81] + i[1] + i[80] + i[33] + i[70] + i[61] + i[71],
    ct = i[82] + i[78] + i[79],
    ut = i[55] + i[83],
    _t = i[22] + i[84] + i[85] + i[86],
    lt = i[87],
    dt = i[22] + i[84] + i[1] + i[88],
    vt = i[22] + i[84] + i[85] + i[89],
    bt = i[22] + i[84] + i[61] + i[90],
    yt = i[22] + i[84],
    gt = i[91] + i[22] + i[92],
    Et = i[93] + i[42],
    xt = i[3] + i[51] + i[94] + i[95] + i[96],
    mt = i[97] + i[51] + i[94] + i[95] + i[98],
    pt = i[99],
    Mt = i[100] + i[101] + i[42] + i[102],
    wt = i[3] + i[51] + i[94] + i[95] + i[98],
    Tt = i[45] + i[28] + i[103],
    Ot = i[82],
    At = i[104] + i[28] + i[105],
    St = i[22] + i[76] + i[106],
    Dt = i[60] + i[107] + i[108],
    It = i[109],
    Lt = i[110],
    Rt = i[24] + i[111] + i[58],
    Pt = i[112],
    kt = i[113],
    Ct = i[114] + i[115],
    Nt = i[22] + i[76] + i[51] + i[116],
    Bt = i[22] + i[117],
    Ft = i[118],
    $t = i[119],
    Gt = i[22] + i[120],
    Ht = i[121],
    Xt = i[122],
    Wt = i[85] + i[89] + i[58],
    Ut = i[123],
    Yt = i[94],
    jt = i[97],
    Zt = i[124] + i[42] + i[125],
    Qt = i[126] + i[73] + i[127],
    Vt = i[126] + i[24] + i[111],
    Kt = i[128] + i[73] + i[127],
    zt = i[129] + i[22] + i[130],
    Jt = i[131],
    qt = i[132],
    ti = i[133],
    ii = i[134] + i[24] + i[135],
    ni = i[136] + i[24] + i[135],
    ei = i[137] + i[138] + i[139],
    si = i[140],
    hi = i[141],
    ri = i[142],
    ai = i[143],
    oi = i[144] + i[22] + i[145],
    fi = i[146],
    ci = i[147] + i[22] + i[148],
    ui = i[149],
    _i = i[147] + i[22] + i[145],
    li = i[147] + i[22] + i[150],
    di = i[151] + i[22] + i[148],
    vi = i[151] + i[22] + i[145],
    bi = i[144] + i[22] + i[150],
    yi = i[151] + i[22] + i[150],
    gi = i[152] + i[85] + i[153],
    Ei = i[154] + i[24] + i[155],
    xi = i[156],
    mi = i[157],
    pi = i[158],
    Mi = i[159],
    wi = i[160],
    Ti = i[158] + i[161],
    Oi = i[112] + i[159] + i[161],
    Ai = i[112] + i[160] + i[161],
    Si = i[162] + i[163] + i[164],
    Di = i[165] + i[78] + i[166],
    Ii = i[165] + i[66] + i[167],
    Li = i[112] + i[165] + i[138] + i[139] + i[161],
    Ri = i[112] + i[162] + i[163] + i[164] + i[161],
    Pi = i[112] + i[31] + i[161],
    ki = i[165] + i[138] + i[139],
    Ci = i[168],
    Ni = i[169] + i[95] + i[96],
    Bi = i[162] + i[95] + i[96],
    Fi = i[3] + i[1] + i[170] + i[95] + i[96],
    $i = i[171] + i[66] + i[128],
    Gi = i[171] + i[66] + i[172],
    Hi = i[171] + i[66] + i[13],
    Xi = i[173],
    Wi = i[174] + i[28] + i[29],
    Ui = i[175],
    Yi = i[176],
    ji = i[22] + i[76] + i[177],
    Zi = i[128] + i[38] + i[178],
    Qi = i[172] + i[38] + i[178],
    Vi = i[179],
    Ki = i[13],
    zi = i[112] + i[180] + i[161],
    Ji = i[112] + i[13] + i[161],
    qi = i[112] + i[162] + i[95] + i[96] + i[161],
    tn = i[128],
    nn = i[181] + i[22] + i[182],
    en = i[172],
    sn = i[181] + i[22] + i[183] + i[22] + i[184],
    hn = i[13] + i[66] + i[167],
    rn = i[22] + i[76] + i[185],
    an = i[186] + i[22] + i[187] + i[22] + i[188],
    on = i[22] + i[76] + i[189],
    fn = i[174] + i[1] + i[170] + i[33] + i[190],
    cn = i[174] + i[1] + i[170] + i[73] + i[191],
    un = i[174] + i[24] + i[192] + i[1] + i[88],
    _n = i[60] + i[1] + i[2],
    ln = i[174] + i[1] + i[2] + i[1] + i[193],
    dn = i[3] + i[95] + i[98],
    vn = i[181] + i[22] + i[194],
    bn = i[180],
    yn = i[195],
    gn = i[22] + i[140] + i[163],
    En = i[22] + i[196] + i[197],
    xn = i[181] + i[22] + i[198],
    mn = i[199],
    pn = i[179] + i[1] + i[200] + i[107] + i[201],
    Mn = i[202] + i[1] + i[200] + i[107] + i[201],
    wn = i[22] + i[202] + i[203] + i[204],
    Tn = i[180] + i[1] + i[200] + i[107] + i[201],
    On = i[26] + i[205],
    An = i[22] + i[98] + i[206] + i[95] + i[96] + i[61] + i[207],
    Sn = i[208],
    Dn = i[209] + i[210] + i[211],
    In = i[168] + i[1] + i[200] + i[107] + i[201],
    Ln = i[180] + i[212],
    Rn = i[213],
    Pn = i[22] + i[76] + i[33] + i[214] + i[1] + i[200] + i[38] + i[178],
    kn = i[215],
    Cn = i[81] + i[216],
    Nn = i[60] + i[217] + i[218] + i[1] + i[219],
    Bn = i[220] + i[28] + i[221],
    Fn = i[222],
    $n = i[216],
    Gn = i[60] + i[38] + i[223] + i[1] + i[219],
    Hn = i[216] + i[81] + i[216],
    Xn = i[224],
    Wn = i[225],
    Un = i[226],
    Yn = i[227],
    jn = i[228] + i[73] + i[229],
    Zn = i[230],
    Qn = i[231],
    Vn = i[128] + i[73] + i[229],
    Kn = i[232] + i[211] + i[233],
    zn = i[234],
    Jn = i[78] + i[235],
    qn = i[220] + i[78] + i[236] + i[138] + i[237],
    te = i[238] + i[239] + i[240],
    ie = i[241] + i[216] + i[242],
    ne = i[243],
    ee = i[128] + i[28] + i[29] + i[38] + i[178],
    se = i[244] + i[22] + i[245],
    he = i[246] + i[59] + i[247] + i[59] + i[248] + i[59] + i[249],
    re = i[250],
    ae = i[251] + i[252] + i[85] + i[253],
    oe = i[254] + i[59] + i[255] + i[59] + i[256] + i[59] + i[257] + i[59] + i[258] + i[59] + i[259] + i[59] + i[260] + i[59] + i[261] + i[59],
    fe = i[59] + i[246] + i[59] + i[247] + i[59] + i[248] + i[59] + i[249],
    ce = i[78] + i[262] + i[28] + i[29],
    ue = i[263] + i[24] + i[264],
    _e = i[22] + i[76] + i[51] + i[265] + i[95] + i[266],
    le = i[267] + i[107] + i[268],
    de = i[209] + i[269],
    ve = i[232] + i[270],
    be = i[22] + i[175],
    ye = i[22] + i[271],
    ge = i[22] + i[272] + i[24] + i[273],
    Ee = i[209] + i[274] + i[275],
    xe = i[22] + i[76] + i[276],
    me = i[259],
    pe = i[256],
    Me = i[172] + i[28] + i[29] + i[38] + i[178],
    we = i[174],
    Te = i[209] + i[277] + i[24] + i[278] + i[78] + i[279],
    Oe = i[209] + i[174] + i[38] + i[280] + i[24] + i[278] + i[61] + i[281],
    Ae = i[282],
    Se = i[283] + i[115],
    De = i[22] + i[146] + i[284] + i[28] + i[29],
    Ie = i[283],
    Le = i[22] + i[76] + i[285],
    Re = i[209] + i[76] + i[51] + i[80] + i[1] + i[286],
    Pe = i[209] + i[146] + i[284] + i[203] + i[287] + i[78] + i[262] + i[28] + i[29],
    ke = i[22] + i[288],
    Ce = i[289] + i[85] + i[290],
    Ne = i[98] + i[85] + i[290],
    Be = i[209] + i[291],
    Fe = i[292],
    $e = i[293],
    Ge = i[294],
    He = i[295] + i[85] + i[296],
    Xe = i[255],
    We = i[257],
    Ue = i[258],
    Ye = i[254],
    je = i[297],
    Ze = i[298] + i[107] + i[299],
    Qe = i[300],
    Ve = i[301],
    Ke = i[302] + i[270],
    ze = i[302] + i[303],
    Je = i[209] + i[76] + i[51] + i[286] + i[78] + i[279],
    qe = i[304],
    ts = i[209] + i[305],
    is = i[306],
    ns = i[307],
    es = i[308] + i[115],
    ss = i[308],
    hs = i[309] + i[115],
    rs = i[309],
    as = i[310] + i[115],
    os = i[310],
    fs = i[311] + i[115],
    cs = i[311],
    us = i[3] + i[1] + i[265] + i[85] + i[312],
    _s = i[313] + i[115],
    ls = i[313],
    ds = i[3] + i[107] + i[314],
    vs = i[3] + i[28] + i[221] + i[51] + i[94] + i[203] + i[252] + i[28] + i[29],
    bs = i[3] + i[315],
    ys = i[174] + i[28] + i[221] + i[73] + i[316],
    gs = i[174] + i[1] + i[193],
    Es = i[22] + i[76] + i[33] + i[317],
    xs = i[22] + i[76] + i[318] + i[51],
    ms = i[319],
    ps = i[320],
    Ms = i[321],
    ws = i[322] + i[270],
    Ts = i[22] + i[146] + i[284] + i[270],
    Os = i[22] + i[146] + i[284] + i[303],
    As = i[323] + i[107] + i[299] + i[270],
    Ss = i[324] + i[1] + i[325],
    Ds = i[216] + i[72] + i[216] + i[326] + i[216] + i[327],
    Is = i[216] + i[72] + i[216] + i[326] + i[216] + i[328],
    Ls = i[216] + i[72] + i[216] + i[329],
    Rs = i[216] + i[75] + i[216] + i[326] + i[216] + i[327],
    Ps = i[216] + i[75] + i[216] + i[326] + i[216] + i[328],
    ks = i[216] + i[75] + i[216] + i[329],
    Cs = i[330],
    Ns = i[331],
    Bs = i[332] + i[14] + i[333],
    Fs = i[22] + i[76] + i[51] + i[334],
    $s = i[22] + i[69] + i[335],
    Gs = i[22] + i[336] + i[284],
    Hs = i[22] + i[174] + i[85] + i[337],
    Xs = i[338],
    Ws = i[209] + i[295] + i[339],
    Us = i[340],
    Ys = i[341],
    js = i[342],
    Zs = i[343] + i[85] + i[344],
    Qs = i[345],
    Vs = i[100] + i[346] + i[42] + i[125],
    Ks = i[206] + i[66] + i[206],
    zs = i[347],
    Js = i[348] + i[1] + i[170],
    qs = i[348] + i[28] + i[221] + i[1] + i[170],
    th = i[349] + i[78] + i[166],
    ih = i[350] + i[138] + i[139],
    nh = i[351] + i[28] + i[221] + i[85] + i[352],
    eh = i[45] + i[78] + i[262] + i[85] + i[353],
    sh = i[97] + i[73] + i[127],
    hh = i[85] + i[89],
    rh = i[24] + i[111],
    ah = i[95] + i[354],
    oh = i[28] + i[29],
    fh = i[355] + i[356],
    ch = i[24] + i[135],
    uh = i[107] + i[314],
    _h = i[85] + i[357] + i[203] + i[204],
    lh = i[107] + i[314] + i[203] + i[204],
    dh = i[358] + i[178],
    vh = i[346] + i[359],
    bh = i[346] + i[360],
    yh = i[361] + i[360],
    gh = i[100] + i[360] + i[42] + i[362] + i[42] + i[125] + i[66],
    Eh = i[346] + i[363],
    xh = i[361] + i[78] + i[236],
    mh = i[100] + i[363] + i[42] + i[362] + i[42] + i[125] + i[66],
    ph = i[364],
    Mh = i[45] + i[203] + i[365] + i[366] + i[367],
    wh = i[368] + i[107] + i[369],
    Th = i[107] + i[370] + i[85] + i[353],
    Oh = i[371],
    Ah = i[372],
    Sh = i[373],
    Dh = i[128] + i[374] + i[229],
    Ih = i[375],
    Lh = i[376],
    Rh = i[377] + i[66] + i[378],
    Ph = i[377],
    kh = i[379],
    Ch = i[380],
    Nh = i[380] + i[66] + i[355],
    Bh = i[380] + i[66] + i[163],
    Fh = i[381],
    $h = i[381] + i[66] + i[355],
    Gh = i[381] + i[66] + i[163],
    Hh = i[381] + i[66] + i[355] + i[66] + i[163],
    Xh = i[381] + i[66] + i[163] + i[66] + i[355],
    Wh = i[382] + i[66] + i[383],
    Uh = i[382] + i[66] + i[131],
    Yh = i[382] + i[66] + i[118],
    jh = i[382] + i[66] + i[119],
    Zh = i[384],
    Qh = i[385],
    Vh = i[386],
    Kh = i[387],
    zh = i[378],
    Jh = i[388],
    qh = i[389],
    tr = i[390],
    ir = i[391],
    nr = i[392],
    er = i[393],
    sr = i[394],
    hr = i[395],
    rr = i[396],
    ar = i[397],
    or = i[398],
    fr = i[399],
    cr = i[400],
    ur = i[401],
    _r = i[402] + i[66] + i[403],
    lr = i[402] + i[66] + i[317],
    dr = i[402] + i[66] + i[115],
    vr = i[402] + i[66] + i[284],
    br = i[402] + i[66] + i[404],
    yr = i[402] + i[66] + i[275],
    gr = i[402] + i[66] + i[210],
    Er = i[402] + i[66] + i[405],
    xr = i[402] + i[66] + i[318],
    mr = i[402] + i[66] + i[340],
    pr = i[128] + i[24] + i[111],
    Mr = i[406] + i[22] + i[407] + i[22] + i[187] + i[22] + i[408],
    wr = i[409],
    Tr = i[406] + i[22] + i[407] + i[22] + i[187] + i[22] + i[410],
    Or = i[411],
    Ar = i[406] + i[22] + i[412] + i[22] + i[187] + i[22] + i[413],
    Sr = i[406] + i[22] + i[412] + i[22] + i[187] + i[22] + i[414],
    Dr = i[406] + i[22] + i[412] + i[22] + i[187] + i[22] + i[415],
    Ir = i[416],
    Lr = i[417] + i[22] + i[418] + i[22] + i[187] + i[22] + i[419],
    Rr = i[420],
    Pr = i[417] + i[22] + i[418] + i[22] + i[187] + i[22] + i[421],
    kr = i[422],
    Cr = i[417] + i[22] + i[418] + i[22] + i[187] + i[22] + i[423],
    Nr = i[424] + i[22] + i[187],
    Br = i[424] + i[22] + i[187] + i[22] + i[425],
    Fr = i[424] + i[22] + i[425] + i[22] + i[426],
    $r = i[424] + i[22] + i[427],
    Gr = i[428] + i[22] + i[429],
    Hr = i[406] + i[22] + i[430],
    Xr = i[431] + i[24] + i[432] + i[73] + i[433],
    Wr = i[93],
    Ur = i[434],
    Yr = i[115] + i[98],
    jr = i[435],
    Zr = i[72] + i[51] + i[436] + i[85] + i[437] + i[24] + i[432] + i[73] + i[433],
    Qr = i[75] + i[51] + i[436] + i[85] + i[437] + i[24] + i[432] + i[73] + i[433],
    Vr = i[81] + i[51] + i[436] + i[85] + i[437] + i[24] + i[432] + i[73] + i[433],
    Kr = i[438] + i[85] + i[437] + i[24] + i[432] + i[73] + i[433],
    zr = i[77] + i[85] + i[89],
    Jr = i[91] + i[22] + i[429],
    qr = i[91] + i[22] + i[439],
    ta = i[3] + i[95] + i[440] + i[107] + i[314],
    ia = i[22] + i[411] + i[73],
    na = i[22] + i[140] + i[210] + i[1] + i[441],
    ea = i[22] + i[442] + i[24] + i[111],
    sa = i[348] + i[24] + i[111],
    ha = i[443] + i[24] + i[111],
    ra = i[22] + i[444] + i[115] + i[123],
    aa = i[22] + i[444] + i[115] + i[94],
    oa = i[22] + i[444] + i[317] + i[123],
    fa = i[22] + i[444] + i[317] + i[94],
    ca = i[445],
    ua = i[446] + i[78] + i[76],
    _a = i[447] + i[78] + i[76],
    la = i[448] + i[1] + i[449] + i[78] + i[76],
    da = i[450] + i[1] + i[449] + i[78] + i[76],
    va = i[451] + i[24] + i[452],
    ba = i[22] + i[76] + i[453],
    ya = i[22] + i[454],
    ga = i[26] + i[455] + i[24] + i[111],
    Ea = i[26] + i[455] + i[24] + i[111] + i[317],
    xa = i[26] + i[455] + i[24] + i[111] + i[115],
    ma = i[447] + i[211] + i[233],
    pa = i[456] + i[85] + i[86],
    Ma = i[55] + i[457],
    wa = i[458] + i[73] + i[127],
    Ta = i[459],
    Oa = i[460] + i[33] + i[461],
    Aa = i[462],
    Sa = i[463],
    Da = i[458] + i[85] + i[86],
    Ia = i[55] + i[15] + i[206] + i[15] + i[317] + i[15] + i[115],
    La = i[458],
    Ra = i[331] + i[78] + i[76],
    Pa = i[55] + i[464],
    ka = i[456],
    Ca = i[465] + i[24] + i[452],
    Na = i[55] + i[466],
    Ba = i[467],
    Fa = i[468] + i[22] + i[469],
    $a = i[468] + i[22] + i[430],
    Ga = i[468] + i[22] + i[470],
    Ha = i[471] + i[1] + i[472],
    Xa = i[129] + i[22] + i[473] + i[22] + i[474],
    Wa = i[475],
    Ua = i[22] + i[76] + i[33] + i[284],
    Ya = i[476],
    ja = i[77] + i[51] + i[94] + i[73] + i[127],
    Za = i[125],
    Qa = i[168] + i[138] + i[237],
    Va = i[172] + i[1] + i[170],
    Ka = i[95] + i[440] + i[42] + i[346] + i[42] + i[125] + i[477],
    za = i[22] + i[478],
    Ja = i[22] + i[479],
    qa = i[480],
    to = i[481],
    io = i[482],
    no = i[483],
    eo = i[484] + i[1] + i[170],
    so = i[485],
    ho = i[486],
    ro = i[487] + i[488] + i[489],
    ao = i[487] + i[95] + i[96],
    oo = i[490] + i[203] + i[491],
    fo = i[131] + i[24] + i[116],
    co = i[383] + i[24] + i[116],
    uo = i[478],
    _o = i[492] + i[95] + i[440] + i[107] + i[314],
    lo = i[493],
    vo = i[475] + i[95] + i[440],
    bo = i[494],
    yo = i[468] + i[22] + i[129] + i[22] + i[429],
    go = i[22] + i[121],
    Eo = i[22] + i[122],
    xo = i[379] + i[1] + i[472],
    mo = i[379] + i[51] + i[495],
    po = i[379] + i[14] + i[496] + i[270],
    Mo = i[379] + i[14] + i[496] + i[303],
    wo = i[288],
    To = i[471] + i[1] + i[472] + i[51] + i[497] + i[203] + i[237],
    Oo = i[468] + i[22] + i[498],
    Ao = i[22] + i[263] + i[1] + i[499],
    So = i[500] + i[85] + i[290],
    Do = i[501] + i[78] + i[502],
    Io = i[503],
    Lo = i[346],
    Ro = i[3] + i[51] + i[504],
    Po = i[288] + i[203] + i[237],
    ko = i[505] + i[66] + i[506],
    Co = i[507],
    No = i[475] + i[42] + i[503] + i[42] + i[125] + i[477],
    Bo = i[0] + i[95] + i[440],
    Fo = i[3] + i[33] + i[508] + i[95] + i[509],
    $o = i[510],
    Go = i[511] + i[22] + i[187] + i[22] + i[512],
    Ho = i[513],
    Xo = i[514],
    Wo = i[220] + i[38] + i[515] + i[488] + i[516],
    Uo = i[511] + i[22] + i[187] + i[22] + i[517],
    Yo = i[518],
    jo = i[220] + i[73] + i[519] + i[488] + i[516],
    Zo = i[128] + i[1] + i[472] + i[85] + i[383],
    Qo = i[512] + i[22] + i[511] + i[22] + i[520],
    Vo = i[512] + i[22] + i[511] + i[22] + i[521],
    Ko = i[522] + i[22] + i[512] + i[22] + i[511],
    zo = i[523],
    Jo = i[524],
    qo = i[525],
    tf = i[526] + i[22] + i[406] + i[22] + i[527],
    nf = i[526] + i[22] + i[528] + i[22] + i[527],
    ef = i[526] + i[22] + i[419] + i[22] + i[527],
    sf = i[526] + i[22] + i[529] + i[22] + i[527],
    hf = i[530] + i[78] + i[531],
    rf = i[24] + i[452] + i[85] + i[532],
    af = i[194] + i[22] + i[526] + i[22] + i[187],
    of = i[533],
    ff = i[3] + i[38] + i[534],
    cf = i[447],
    uf = i[535] + i[22] + i[536],
    _f = i[535] + i[22] + i[536] + i[22] + i[537],
    lf = i[535] + i[22] + i[536] + i[22] + i[538],
    df = i[535] + i[22] + i[536] + i[22] + i[427] + i[22] + i[539],
    vf = i[535] + i[22] + i[536] + i[22] + i[540],
    bf = i[60] + i[363],
    yf = i[202] + i[85] + i[541] + i[51] + i[495],
    gf = i[202] + i[85] + i[541] + i[14] + i[496] + i[270],
    Ef = i[424] + i[22] + i[187] + i[22] + i[542],
    xf = i[202] + i[1] + i[472],
    mf = i[543],
    pf = i[447] + i[1] + i[544],
    Mf = i[447] + i[545] + i[546],
    wf = i[202] + i[78] + i[166],
    Tf = i[543] + i[85] + i[86],
    Of = i[57] + i[58] + i[206] + i[59] + i[206] + i[59] + i[206] + i[59] + i[206] + i[63],
    Af = i[458] + i[1] + i[472],
    Sf = i[22] + i[458] + i[488] + i[516],
    Df = i[458] + i[488] + i[516],
    If = i[447] + i[107] + i[547],
    Lf = i[447] + i[61] + i[548] + i[1] + i[472],
    Rf = i[447] + i[107] + i[547] + i[1] + i[544],
    Pf = i[447] + i[107] + i[547] + i[545] + i[546],
    kf = i[447] + i[107] + i[547] + i[14] + i[496],
    Cf = i[45] + i[24] + i[111] + i[95] + i[336] + i[85] + i[549],
    Nf = i[45] + i[24] + i[111] + i[95] + i[336] + i[24] + i[452],
    Bf = i[22] + i[550] + i[85] + i[89],
    Ff = i[22] + i[551] + i[24] + i[552],
    $f = i[553],
    Gf = i[554],
    Hf = i[555] + i[66] + i[556],
    Xf = i[557] + i[66] + i[556],
    Wf = i[558],
    Uf = i[535] + i[22] + i[536] + i[22] + i[559],
    Yf = i[302],
    jf = i[560],
    Zf = i[535] + i[22] + i[536] + i[22] + i[512] + i[22] + i[539],
    Qf = i[77] + i[78] + i[235],
    Vf = i[58],
    Kf = i[561],
    zf = i[535] + i[22] + i[536] + i[22] + i[562],
    Jf = i[22] + i[146] + i[563],
    qf = i[416] + i[38] + i[564],
    tc = i[55] + i[317] + i[1] + i[210] + i[51] + i[565] + i[107],
    ic = i[55] + i[566],
    nc = i[55] + i[567] + i[28] + i[318] + i[51],
    ec = i[55] + i[568] + i[51] + i[569],
    sc = i[55] + i[568] + i[33] + i[570],
    hc = i[55] + i[571] + i[1] + i[177],
    rc = i[55] + i[572],
    ac = i[55] + i[317] + i[107] + i[210] + i[1] + i[565] + i[61],
    oc = i[55] + i[573] + i[51] + i[206],
    fc = i[55] + i[574] + i[575],
    cc = i[55] + i[317] + i[61] + i[210] + i[576] + i[115],
    uc = i[55] + i[568] + i[33] + i[577],
    _c = i[55] + i[578],
    lc = i[55] + i[115] + i[579] + i[318] + i[580],
    dc = i[55] + i[581],
    vc = i[55] + i[582] + i[107] + i[177],
    bc = i[55] + i[583],
    yc = i[55] + i[317] + i[61] + i[584] + i[33] + i[404],
    gc = i[55] + i[585] + i[586] + i[115],
    Ec = i[55] + i[587] + i[588],
    xc = i[55] + i[317] + i[28] + i[210] + i[589] + i[206],
    mc = i[55] + i[590],
    pc = i[55] + i[15] + i[405] + i[15] + i[318] + i[15] + i[318],
    Mc = i[55] + i[210] + i[33] + i[591],
    wc = i[55] + i[404] + i[61] + i[404] + i[1] + i[404] + i[51],
    Tc = i[55] + i[592],
    Oc = i[55] + i[593],
    Ac = i[55] + i[210] + i[61] + i[210] + i[28] + i[210] + i[61],
    Sc = i[55] + i[404] + i[1] + i[594],
    Dc = i[55] + i[595],
    Ic = i[55] + i[405] + i[107] + i[405] + i[107] + i[405] + i[107],
    Lc = i[55] + i[596],
    Rc = i[55] + i[597],
    Pc = i[55] + i[598],
    kc = i[55] + i[565] + i[28] + i[565] + i[107] + i[565] + i[107],
    Cc = i[55] + i[33] + i[405] + i[33] + i[275] + i[33] + i[404],
    Nc = i[55] + i[33] + i[565] + i[33] + i[210] + i[33] + i[275],
    Bc = i[55] + i[33] + i[405] + i[33] + i[404] + i[33] + i[284],
    Fc = i[55] + i[599],
    $c = i[55] + i[28] + i[565] + i[600],
    Gc = i[55] + i[565] + i[601] + i[206] + i[524] + i[206],
    Hc = i[55] + i[149] + i[565] + i[602],
    Xc = i[55] + i[284] + i[579] + i[284] + i[524] + i[603],
    Wc = i[55] + i[51] + i[115] + i[604],
    Uc = i[55] + i[115] + i[28] + i[318] + i[605],
    Yc = i[55] + i[606],
    jc = i[55] + i[143] + i[275] + i[143] + i[275] + i[143] + i[210],
    Zc = i[197] + i[216],
    Qc = i[26] + i[607] + i[51] + i[94] + i[33] + i[608] + i[24] + i[111],
    Vc = i[22] + i[76] + i[609],
    Kc = i[26] + i[109],
    zc = i[26] + i[445] + i[270],
    Jc = i[26] + i[610] + i[85] + i[89],
    qc = i[26] + i[610] + i[33] + i[608] + i[24] + i[111],
    tu = i[26] + i[507],
    iu = i[26] + i[377],
    nu = i[611],
    eu = i[612] + i[24] + i[613],
    su = i[26] + i[614] + i[211] + i[233],
    hu = i[26] + i[377] + i[73] + i[615],
    ru = i[22] + i[614] + i[270],
    au = i[26] + i[614] + i[270],
    ou = i[22] + i[614] + i[303],
    fu = i[26] + i[445] + i[303],
    cu = i[26] + i[614] + i[303],
    uu = i[22] + i[336] + i[616] + i[617],
    _u = i[3] + i[73] + i[127],
    lu = i[618] + i[488] + i[516],
    du = i[619] + i[488] + i[516],
    vu = i[22] + i[76] + i[33] + i[620] + i[488] + i[516],
    bu = i[209] + i[146] + i[621] + i[613],
    yu = i[26] + i[610] + i[73] + i[622],
    gu = i[607] + i[51] + i[94] + i[24] + i[452],
    Eu = i[26] + i[180],
    xu = i[22] + i[76] + i[318] + i[623],
    mu = i[22] + i[624] + i[73] + i[622],
    pu = i[77] + i[38] + i[625] + i[107] + i[547],
    Mu = i[3] + i[38] + i[625] + i[107] + i[547],
    wu = i[75] + i[107] + i[547],
    Tu = i[72] + i[38] + i[625] + i[107] + i[547],
    Ou = i[75] + i[107] + i[547] + i[14] + i[496],
    Au = i[72] + i[38] + i[625] + i[107] + i[547] + i[14] + i[496],
    Su = i[626],
    Du = i[627] + i[1] + i[237] + i[33] + i[142],
    Iu = i[95] + i[628] + i[42] + i[629] + i[42] + i[630] + i[66],
    Lu = i[631],
    Ru = i[22] + i[76] + i[51] + i[499],
    Pu = i[22] + i[632] + i[211] + i[633],
    ku = i[22] + i[76] + i[634],
    Cu = i[22] + i[76] + i[33] + i[635] + i[95] + i[440],
    Nu = i[636] + i[51] + i[637],
    Bu = i[636] + i[51] + i[638],
    Fu = i[636],
    $u = i[636] + i[217] + i[639],
    Gu = i[640],
    Hu = i[236] + i[78] + i[166],
    Xu = i[641],
    Wu = i[642],
    Uu = i[643],
    Yu = i[631] + i[78] + i[644],
    ju = i[645],
    Zu = i[646],
    Qu = i[647] + i[355] + i[648],
    Vu = i[649],
    Ku = i[650],
    zu = i[651] + i[1] + i[237],
    Ju = i[652],
    qu = i[653],
    t_ = i[654],
    i_ = i[655],
    n_ = i[656] + i[85] + i[89],
    e_ = i[656] + i[61] + i[207],
    s_ = i[657] + i[203] + i[327] + i[1] + i[237] + i[85] + i[89],
    h_ = i[658],
    r_ = i[152] + i[1] + i[659] + i[1] + i[237],
    a_ = i[236],
    o_ = i[660],
    f_ = i[217] + i[661] + i[42] + i[662] + i[161] + i[206] + i[123],
    c_ = i[663],
    u_ = i[138] + i[664] + i[42] + i[524] + i[42] + i[663] + i[42] + i[665] + i[66],
    __ = i[666] + i[61] + i[207],
    l_ = i[555] + i[73] + i[667],
    d_ = i[666] + i[85] + i[89],
    v_ = i[668] + i[1] + i[472],
    b_ = i[550] + i[33] + i[669] + i[73] + i[433],
    y_ = i[260],
    g_ = i[670] + i[366] + i[367],
    E_ = i[643] + i[366] + i[367],
    x_ = i[671] + i[366] + i[367],
    m_ = i[672] + i[1] + i[237],
    p_ = i[673] + i[163] + i[674] + i[477],
    M_ = i[673] + i[24] + i[675] + i[42] + i[107] + i[676] + i[477],
    w_ = i[673],
    T_ = i[677],
    O_ = i[15] + i[678] + i[143] + i[404] + i[579] + i[679] + i[680] + i[405] + i[524] + i[681] + i[579] + i[682] + i[149] + i[284] + i[683] + i[565] + i[684] + i[685] + i[686] + i[453] + i[687] + i[206] + i[143] + i[275] + i[15] + i[688] + i[524] + i[689] + i[690] + i[691] + i[149] + i[692] + i[693] + i[284] + i[694] + i[206] + i[695] + i[696] + i[143] + i[697] + i[698] + i[699] + i[700] + i[284] + i[579] + i[701] + i[15] + i[702] + i[703] + i[210] + i[143] + i[704] + i[15] + i[705] + i[706] + i[565] + i[707] + i[708] + i[15] + i[565] + i[149] + i[275] + i[98] + i[317] + i[579] + i[404] + i[579] + i[709] + i[143] + i[115] + i[98] + i[691] + i[710] + i[318] + i[98] + i[284] + i[579] + i[59] + i[711] + i[317] + i[524] + i[712] + i[98] + i[713] + i[524] + i[714] + i[15] + i[715] + i[690] + i[716] + i[717] + i[718] + i[719] + i[404] + i[720] + i[721] + i[722] + i[723] + i[524] + i[405] + i[724] + i[284] + i[149] + i[206] + i[725] + i[726] + i[727] + i[728] + i[579] + i[729] + i[730] + i[206] + i[149] + i[731] + i[732] + i[733] + i[711] + i[734] + i[735] + i[736] + i[149] + i[206] + i[737] + i[738] + i[739] + i[740] + i[149] + i[741] + i[742] + i[565] + i[143] + i[743] + i[149] + i[744] + i[745] + i[210] + i[746] + i[747] + i[524] + i[748] + i[579] + i[317] + i[749] + i[750] + i[751] + i[318] + i[149] + i[752] + i[579] + i[753] + i[745] + i[59] + i[318] + i[754] + i[565] + i[15] + i[115] + i[15] + i[755] + i[579] + i[756] + i[700] + i[757] + i[698] + i[317] + i[149] + i[758] + i[579] + i[404] + i[759] + i[760] + i[98] + i[761] + i[762] + i[763] + i[764] + i[765] + i[766] + i[767] + i[143] + i[565] + i[710] + i[603] + i[149] + i[768] + i[15] + i[769] + i[143] + i[275] + i[190] + i[770] + i[579] + i[771] + i[15] + i[772] + i[524] + i[284] + i[149] + i[565] + i[524] + i[773] + i[774] + i[775] + i[524] + i[776] + i[524] + i[777] + i[778] + i[779] + i[780] + i[781] + i[149] + i[782] + i[149] + i[783] + i[143] + i[318] + i[143] + i[784] + i[693] + i[785] + i[149] + i[284] + i[98] + i[786] + i[707] + i[750] + i[15],
    A_ = i[673] + i[38] + i[787] + i[42] + i[60] + i[161],
    S_ = i[788] + i[789] + i[790] + i[788] + i[284] + i[33] + i[788] + i[789] + i[791] + i[66] + i[241] + i[66] + i[645] + i[788] + i[115] + i[1] + i[792] + i[66] + i[241] + i[66] + i[645] + i[788] + i[115] + i[1] + i[793] + i[66] + i[241] + i[66] + i[645],
    D_ = i[794],
    I_ = i[795],
    L_ = i[627] + i[33] + i[142],
    R_ = i[796] + i[217],
    P_ = i[797],
    k_ = i[798],
    C_ = i[799],
    N_ = i[241],
    B_ = i[800],
    F_ = i[801] + i[66] + i[206] + i[66] + i[206] + i[66] + i[317],
    $_ = i[802],
    G_ = i[803],
    H_ = "", // waterMark : i[197] + i[804] + i[42] + i[104] + i[42] + i[805] + i[275],
    X_ = i[22] + i[76] + i[33] + i[219] + i[1] + i[806],
    W_ = i[807],
    U_ = i[808],
    Y_ = i[809] + i[211] + i[810],
    j_ = i[801] + i[66] + i[691] + i[66] + i[317],
    Z_ = i[85] + i[153],
    Q_ = i[811],
    V_ = i[206] + i[93],
    K_ = i[812],
    z_ = i[813] + i[28] + i[221],
    J_ = i[814],
    q_ = i[107] + i[676],
    tl = i[815],
    il = i[816],
    nl = i[817],
    el = i[197] + i[216] + i[1] + i[806],
    sl = i[818],
    hl = i[206] + i[42] + i[206],
    rl = i[197] + i[216] + i[1] + i[806] + i[24] + i[819],
    al = i[820] + i[788],
    ol = i[821],
    fl = i[197] + i[216] + i[488] + i[822],
    cl = i[22] + i[76] + i[51] + i[115],
    ul = i[77] + i[24] + i[192],
    _l = i[22] + i[210] + i[211] + i[823],
    ll = i[610],
    dl = i[824],
    vl = i[825],
    bl = i[22] + i[274] + i[73] + i[826] + i[335],
    yl = i[505] + i[73] + i[827],
    gl = i[22] + i[76] + i[318] + i[61],
    El = i[828],
    xl = i[209] + i[829] + i[565],
    ml = i[126],
    pl = i[22] + i[76] + i[51] + i[206],
    Ml = i[22] + i[336] + i[275] + i[826] + i[38] + i[39],
    wl = i[22] + i[76] + i[51] + i[317],
    Tl = i[22] + i[76] + i[830],
    Ol = i[22] + i[76] + i[318] + i[107],
    Al = i[525] + i[95] + i[96],
    Sl = i[831] + i[51] + i[214],
    Dl = i[22] + i[76] + i[51] + i[832],
    Il = i[22] + i[76] + i[33] + i[833],
    Ll = i[471],
    Rl = i[22] + i[98] + i[206] + i[1] + i[806] + i[85] + i[89] + i[61] + i[207],
    Pl = i[834] + i[78] + i[235],
    kl = i[22] + i[825],
    Cl = i[22] + i[76] + i[51] + i[265] + i[203] + i[835],
    Nl = i[836] + i[203] + i[835],
    Bl = i[837],
    Fl = i[209] + i[76] + i[51] + i[838] + i[203] + i[835],
    $l = i[77] + i[85] + i[86],
    Gl = i[839],
    Hl = i[828] + i[58],
    Xl = i[22] + i[76] + i[318] + i[488],
    Wl = i[840],
    Ul = i[3] + i[28] + i[221] + i[51] + i[94] + i[95] + i[98],
    Yl = i[22] + i[76] + i[841],
    jl = i[19] + i[138] + i[139],
    Zl = i[842] + i[95] + i[96],
    Ql = i[3] + i[1] + i[843],
    Vl = i[844] + i[78] + i[845],
    Kl = i[232] + i[303],
    zl = i[846] + i[847] + i[496],
    Jl = i[846] + i[270],
    ql = i[846] + i[848] + i[496],
    td = i[3] + i[51] + i[849] + i[1] + i[850] + i[73] + i[127],
    id = i[22] + i[76] + i[318] + i[355],
    nd = i[60] + i[38] + i[851],
    ed = i[424] + i[22] + i[852],
    sd = i[853] + i[95] + i[98],
    hd = i[209] + i[274] + i[38],
    rd = i[22] + i[76] + i[318] + i[545],
    ad = i[22] + i[98] + i[206] + i[51] + i[504] + i[61] + i[207],
    od = i[104] + i[28] + i[105] + i[73] + i[854],
    fd = i[22] + i[76] + i[33] + i[855] + i[1] + i[806],
    cd = i[232] + i[355] + i[856],
    ud = i[3] + i[488] + i[857] + i[51] + i[504],
    _d = i[22] + i[825] + i[1] + i[858],
    ld = i[22] + i[60] + i[95] + i[859] + i[73] + i[127],
    dd = i[22] + i[76] + i[860],
    vd = i[861] + i[22] + i[862],
    bd = i[863] + i[66] + i[282],
    yd = i[861] + i[22] + i[864],
    gd = i[863] + i[66] + i[865],
    Ed = i[861] + i[22] + i[187],
    xd = i[22] + i[274] + i[73],
    md = i[22] + i[383] + i[1] + i[806],
    pd = i[22] + i[76] + i[569],
    Md = i[22] + i[275] + i[623],
    wd = i[22] + i[829] + i[565] + i[61] + i[866],
    Td = i[152] + i[33] + i[34],
    Od = i[60] + i[33] + i[34],
    Ad = i[45] + i[38] + i[867],
    Sd = i[3] + i[28] + i[868] + i[51] + i[869],
    Dd = i[853] + i[51] + i[504],
    Id = i[3] + i[870] + i[94] + i[203] + i[252] + i[28] + i[29],
    Ld = i[22] + i[405] + i[73],
    Rd = i[22] + i[284] + i[545],
    Pd = i[22] + i[825] + i[1] + i[88],
    kd = i[22] + i[871] + i[33] + i[872],
    Cd = i[462] + i[78] + i[76],
    Nd = i[610] + i[163] + i[873],
    Bd = i[22] + i[196] + i[61],
    Fd = i[22] + i[874] + i[1] + i[88],
    $d = i[875] + i[66] + i[533],
    Gd = i[22] + i[98] + i[14],
    Hd = i[209] + i[404] + i[107],
    Xd = i[876],
    Wd = i[610] + i[73] + i[877],
    Ud = i[853] + i[1] + i[878],
    Yd = i[879] + i[85] + i[880] + i[138] + i[881],
    jd = i[882],
    Zd = i[174] + i[24] + i[25] + i[1] + i[200],
    Qd = i[610] + i[107] + i[314],
    Vd = i[22] + i[76] + i[51] + i[404],
    Kd = i[22] + i[883] + i[51] + i[869] + i[95] + i[884] + i[61] + i[207],
    zd = i[476] + i[28] + i[868] + i[51] + i[869],
    Jd = i[104] + i[28] + i[105] + i[51] + i[94] + i[107] + i[885] + i[61] + i[886],
    qd = i[209] + i[146] + i[404],
    tv = i[202] + i[203] + i[204],
    iv = i[0] + i[28] + i[868],
    nv = i[104] + i[28] + i[105] + i[28] + i[868],
    ev = i[3] + i[95] + i[96] + i[51] + i[94] + i[95] + i[98],
    sv = i[887] + i[203] + i[204],
    hv = i[315] + i[212],
    rv = i[100] + i[101] + i[42] + i[888],
    av = i[77] + i[95] + i[96] + i[33] + i[889],
    ov = i[825] + i[51] + i[504],
    fv = i[22] + i[140] + i[890] + i[204],
    cv = i[220],
    uv = i[22] + i[76] + i[33] + i[855] + i[203],
    _v = i[22] + i[460] + i[51] + i[504],
    lv = i[434] + i[51] + i[504],
    dv = i[22] + i[891] + i[138] + i[892],
    vv = i[22] + i[76] + i[33] + i[318],
    bv = i[186] + i[22] + i[187] + i[22] + i[92],
    yv = i[45] + i[95] + i[628],
    gv = i[45] + i[107] + i[893] + i[14] + i[15],
    Ev = i[77] + i[1] + i[170] + i[95] + i[96],
    xv = i[6] + i[1] + i[325],
    mv = i[205],
    pv = i[77] + i[95] + i[96],
    Mv = i[853],
    wv = i[22] + i[76] + i[894],
    Tv = i[895] + i[315] + i[823],
    Ov = i[172] + i[315],
    Av = i[197] + i[66] + i[28] + i[221],
    Sv = i[896],
    Dv = i[492] + i[85] + i[897],
    Iv = i[898] + i[488] + i[899],
    Lv = i[26] + i[30],
    Rv = i[26] + i[152],
    Pv = i[197] + i[66] + i[28] + i[868],
    kv = i[152],
    Cv = i[22] + i[76] + i[900],
    Nv = i[901],
    Bv = i[22] + i[76] + i[902],
    Fv = i[883] + i[78] + i[166],
    $v = i[903] + i[66] + i[904],
    Gv = i[905] + i[24] + i[452] + i[1] + i[200],
    Hv = i[128] + i[24] + i[452] + i[85] + i[532],
    Xv = i[172] + i[24] + i[452] + i[85] + i[532],
    Wv = i[906],
    Uv = i[60],
    Yv = i[907] + i[28] + i[908],
    jv = i[197] + i[216] + i[349],
    Zv = i[26] + i[909] + i[24] + i[135],
    Qv = i[883],
    Vv = i[0] + i[38] + i[910],
    Kv = i[911] + i[85] + i[912],
    zv = i[22] + i[76] + i[913],
    Jv = i[26] + i[798],
    qv = i[624],
    tb = i[0] + i[61] + i[914],
    ib = i[60] + i[61] + i[914],
    nb = i[22] + i[624],
    eb = i[197] + i[66] + i[138] + i[237],
    sb = i[915] + i[66] + i[128],
    hb = i[915] + i[66] + i[172],
    rb = i[909] + i[24] + i[135],
    ab = i[903],
    ob = i[916] + i[22] + i[917],
    fb = i[428] + i[22] + i[527],
    cb = i[197] + i[66] + i[85] + i[617] + i[138] + i[237],
    ub = i[918] + i[78] + i[76],
    _b = i[919],
    lb = i[85] + i[617] + i[138] + i[237],
    db = i[619],
    vb = i[3] + i[85] + i[617],
    bb = i[420] + i[78] + i[76],
    yb = i[920],
    gb = i[921] + i[22] + i[922],
    Eb = i[921] + i[22] + i[923],
    xb = i[921] + i[22] + i[924],
    mb = i[921] + i[22] + i[925],
    pb = i[921] + i[22] + i[926],
    Mb = i[921] + i[22] + i[927],
    wb = i[921] + i[22] + i[928],
    Tb = i[921] + i[22] + i[929],
    Ob = i[921] + i[22] + i[930],
    Ab = i[921] + i[22] + i[931],
    Sb = i[921] + i[22] + i[932],
    Db = i[921] + i[22] + i[428] + i[22] + i[317],
    Ib = i[921] + i[22] + i[428] + i[22] + i[115],
    Lb = i[921] + i[22] + i[428] + i[22] + i[284],
    Rb = i[921] + i[22] + i[428] + i[22] + i[404],
    Pb = i[921] + i[22] + i[428] + i[22] + i[275],
    kb = i[197] + i[66] + i[51] + i[933],
    Cb = i[934] + i[85] + i[880] + i[138] + i[881],
    Nb = i[935] + i[22] + i[187],
    Bb = i[935] + i[22] + i[187] + i[22] + i[923],
    Fb = i[26] + i[936] + i[78] + i[166],
    $b = i[26] + i[503],
    Gb = i[936],
    Hb = i[935] + i[22] + i[937] + i[22] + i[429],
    Xb = i[935] + i[22] + i[938],
    Wb = i[197] + i[66] + i[488] + i[899],
    Ub = i[22] + i[76] + i[318] + i[203],
    Yb = i[939] + i[85] + i[89],
    jb = i[936] + i[78] + i[166],
    Zb = i[936] + i[95] + i[440],
    Qb = i[488] + i[899],
    Vb = i[197] + i[66] + i[78] + i[236],
    Kb = i[78] + i[236],
    zb = i[476] + i[61] + i[940],
    Jb = i[26] + i[610],
    qb = i[26] + i[941],
    ty = i[942] + i[624] + i[73] + i[622],
    iy = i[460] + i[107] + i[943],
    ny = i[55] + i[944],
    ey = i[202] + i[85] + i[541] + i[14] + i[496] + i[303],
    sy = i[202] + i[51] + i[945],
    hy = i[202] + i[51] + i[620] + i[1] + i[472],
    ry = i[946] + i[85] + i[357],
    ay = i[946] + i[85] + i[357] + i[85] + i[897],
    oy = i[26] + i[947],
    fy = i[445] + i[270],
    cy = i[445] + i[303],
    uy = i[424] + i[22] + i[187] + i[22] + i[542] + i[22] + i[923],
    _y = i[22] + i[948],
    ly = i[377] + i[1] + i[472],
    dy = i[377] + i[38] + i[625] + i[107] + i[547],
    vy = i[377] + i[38] + i[625] + i[107] + i[547] + i[14] + i[496],
    by = i[26] + i[618] + i[1] + i[472],
    yy = i[26] + i[610] + i[107] + i[314],
    gy = i[26] + i[618] + i[488] + i[516],
    Ey = i[476] + i[85] + i[89],
    xy = i[174] + i[51] + i[504] + i[1] + i[88],
    my = i[26] + i[610] + i[38] + i[534],
    py = i[26] + i[610] + i[163] + i[873],
    My = i[911] + i[163] + i[949],
    wy = i[174] + i[107] + i[314] + i[1] + i[88],
    Ty = i[22] + i[76] + i[588],
    Oy = i[38] + i[534],
    Ay = i[163] + i[873],
    Sy = i[33] + i[608] + i[24] + i[111],
    Dy = i[542] + i[22] + i[950],
    Iy = i[51] + i[620] + i[488] + i[516],
    Ly = i[73] + i[622],
    Ry = i[186] + i[22] + i[187] + i[22] + i[951],
    Py = i[3] + i[24] + i[25],
    ky = i[165],
    Cy = i[895] + i[24] + i[25],
    Ny = i[3] + i[85] + i[86],
    By = i[202] + i[66] + i[555],
    Fy = i[202] + i[66] + i[377],
    $y = i[202] + i[66] + i[159],
    Gy = i[471] + i[66] + i[555],
    Hy = i[947],
    Xy = i[379] + i[66] + i[952],
    Wy = i[379] + i[66] + i[555],
    Uy = i[379] + i[66] + i[445] + i[66] + i[123],
    Yy = i[379] + i[66] + i[445] + i[66] + i[94],
    jy = i[953] + i[66] + i[456],
    Zy = i[953] + i[66] + i[456] + i[66] + i[227],
    Qy = i[953] + i[66] + i[447] + i[66] + i[954],
    Vy = i[953] + i[66] + i[458] + i[66] + i[555],
    Ky = i[953] + i[66] + i[458] + i[66] + i[955],
    zy = i[953] + i[66] + i[543],
    Jy = i[953] + i[66] + i[543] + i[66] + i[227],
    qy = i[607] + i[66] + i[154] + i[66] + i[903],
    tg = i[618] + i[66] + i[555],
    ig = i[618] + i[66] + i[955],
    ng = i[377] + i[66] + i[121],
    eg = i[377] + i[66] + i[555],
    sg = i[377] + i[66] + i[447] + i[66] + i[954],
    hg = i[377] + i[66] + i[156],
    rg = i[447] + i[66] + i[956],
    ag = i[447] + i[66] + i[811],
    og = i[447] + i[66] + i[954] + i[66] + i[956],
    fg = i[447] + i[66] + i[954] + i[66] + i[811],
    cg = i[503] + i[66] + i[377] + i[66] + i[121],
    ug = i[468] + i[22] + i[542] + i[22] + i[427],
    _g = i[503] + i[66] + i[377] + i[66] + i[227],
    lg = i[468] + i[22] + i[950],
    dg = i[468] + i[22] + i[542] + i[22] + i[950],
    vg = i[503] + i[66] + i[156],
    bg = i[468] + i[22] + i[957],
    yg = i[503] + i[66] + i[507],
    gg = i[503] + i[66] + i[525] + i[66] + i[13],
    Eg = i[468] + i[22] + i[958],
    xg = i[503] + i[66] + i[959],
    mg = i[503] + i[66] + i[947],
    pg = i[640] + i[66] + i[109],
    Mg = i[960] + i[22] + i[961],
    wg = i[640] + i[66] + i[518],
    Tg = i[960] + i[22] + i[962] + i[22] + i[963],
    Og = i[960] + i[22] + i[964],
    Ag = i[640] + i[66] + i[840],
    Sg = i[960] + i[22] + i[965] + i[22] + i[961],
    Dg = i[960] + i[22] + i[427],
    Ig = i[640] + i[66] + i[555],
    Lg = i[960] + i[22] + i[91] + i[22] + i[429],
    Rg = i[640] + i[66] + i[84] + i[66] + i[824],
    Pg = i[960] + i[22] + i[91] + i[22] + i[439],
    kg = i[640] + i[66] + i[84] + i[66] + i[966],
    Cg = i[960] + i[22] + i[91] + i[22] + i[92],
    Ng = i[640] + i[66] + i[84] + i[66] + i[227],
    Bg = i[640] + i[66] + i[507],
    Fg = i[960] + i[22] + i[967] + i[22] + i[469],
    $g = i[640] + i[66] + i[614] + i[66] + i[121],
    Gg = i[960] + i[22] + i[967],
    Hg = i[640] + i[66] + i[614],
    Xg = i[640] + i[66] + i[156],
    Wg = i[640] + i[66] + i[445] + i[66] + i[123],
    Ug = i[960] + i[22] + i[968] + i[22] + i[303],
    Yg = i[640] + i[66] + i[445] + i[66] + i[94],
    jg = i[960] + i[22] + i[429],
    Zg = i[640] + i[66] + i[824],
    Qg = i[960] + i[22] + i[969] + i[22] + i[961],
    Vg = i[640] + i[66] + i[970] + i[66] + i[518],
    Kg = i[960] + i[22] + i[542],
    zg = i[640] + i[66] + i[377],
    Jg = i[960] + i[22] + i[542] + i[22] + i[406] + i[22] + i[971] + i[22] + i[968],
    qg = i[960] + i[22] + i[542] + i[22] + i[92],
    tE = i[640] + i[66] + i[377] + i[66] + i[227],
    iE = i[960] + i[22] + i[972] + i[22] + i[427],
    nE = i[960] + i[22] + i[972] + i[22] + i[511],
    eE = i[960] + i[22] + i[973],
    sE = i[640] + i[66] + i[941],
    hE = i[960] + i[22] + i[425] + i[22] + i[426],
    rE = i[640] + i[66] + i[379] + i[66] + i[952],
    aE = i[640] + i[66] + i[379] + i[66] + i[555],
    oE = i[960] + i[22] + i[623] + i[22] + i[183],
    fE = i[640] + i[66] + i[525] + i[66] + i[13],
    cE = i[960] + i[22] + i[974] + i[22] + i[148],
    uE = i[640] + i[66] + i[174] + i[66] + i[383],
    _E = i[935] + i[22] + i[972] + i[22] + i[427],
    lE = i[935] + i[22] + i[972] + i[22] + i[511],
    dE = i[935] + i[22] + i[950],
    vE = i[936] + i[66] + i[156],
    bE = i[935] + i[22] + i[975],
    yE = i[936] + i[66] + i[456],
    gE = i[935] + i[22] + i[975] + i[22] + i[92],
    EE = i[936] + i[66] + i[456] + i[66] + i[555],
    xE = i[935] + i[22] + i[975] + i[22] + i[406] + i[22] + i[971],
    mE = i[935] + i[22] + i[975] + i[22] + i[406] + i[22] + i[971] + i[22] + i[968],
    pE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[976],
    ME = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[427],
    wE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[91] + i[22] + i[429],
    TE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[967] + i[22] + i[469],
    OE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[967],
    AE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[968] + i[22] + i[270],
    SE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[968] + i[22] + i[303],
    DE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[542] + i[22] + i[92],
    IE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[972] + i[22] + i[427],
    LE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[972] + i[22] + i[511],
    RE = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[973],
    PE = i[417] + i[22] + i[469],
    kE = i[883] + i[66] + i[121],
    CE = i[417] + i[22] + i[427],
    NE = i[883] + i[66] + i[555],
    BE = i[417] + i[22] + i[977],
    FE = i[883] + i[66] + i[543],
    $E = i[417] + i[22] + i[977] + i[22] + i[92],
    GE = i[883] + i[66] + i[543] + i[66] + i[227],
    HE = i[417] + i[22] + i[406] + i[22] + i[971],
    XE = i[883] + i[66] + i[447] + i[66] + i[954],
    WE = i[417] + i[22] + i[978] + i[22] + i[968],
    UE = i[883] + i[66] + i[152] + i[66] + i[445],
    YE = i[417] + i[22] + i[527] + i[22] + i[968],
    jE = i[883] + i[66] + i[60] + i[66] + i[445],
    ZE = i[417] + i[22] + i[979] + i[22] + i[427],
    QE = i[883] + i[66] + i[458] + i[66] + i[555],
    VE = i[417] + i[22] + i[418] + i[22] + i[187],
    KE = i[883] + i[66] + i[907] + i[66] + i[159],
    zE = i[883] + i[66] + i[907] + i[66] + i[980],
    JE = i[883] + i[66] + i[981] + i[66] + i[982],
    qE = i[883] + i[66] + i[382],
    tx = i[883] + i[66] + i[983] + i[66] + i[984],
    ix = i[417] + i[22] + i[985] + i[22] + i[986] + i[22] + i[987],
    nx = i[417] + i[22] + i[985] + i[22] + i[987],
    ex = i[883] + i[66] + i[41] + i[66] + i[988],
    sx = i[417] + i[22] + i[985] + i[22] + i[130],
    hx = i[883] + i[66] + i[41] + i[66] + i[31],
    rx = i[883] + i[66] + i[989],
    ax = i[417] + i[22] + i[990] + i[22] + i[950],
    ox = i[883] + i[66] + i[989] + i[66] + i[156],
    fx = i[417] + i[22] + i[978] + i[22] + i[634] + i[22] + i[417],
    cx = i[883] + i[66] + i[152] + i[66] + i[991] + i[66] + i[883],
    ux = i[883] + i[66] + i[60] + i[66] + i[991] + i[66] + i[883],
    _x = i[417] + i[22] + i[978] + i[22] + i[992],
    lx = i[883] + i[66] + i[152] + i[66] + i[993],
    dx = i[883] + i[66] + i[60] + i[66] + i[993],
    vx = i[428] + i[22] + i[978],
    bx = i[402] + i[66] + i[152],
    yx = i[428] + i[22] + i[978] + i[22] + i[429],
    gx = i[402] + i[66] + i[152] + i[66] + i[824],
    Ex = i[428] + i[22] + i[978] + i[22] + i[968],
    xx = i[402] + i[66] + i[152] + i[66] + i[445],
    mx = i[428] + i[22] + i[978] + i[22] + i[975],
    px = i[402] + i[66] + i[152] + i[66] + i[456],
    Mx = i[428] + i[22] + i[978] + i[22] + i[975] + i[22] + i[92],
    wx = i[428] + i[22] + i[978] + i[22] + i[977],
    Tx = i[402] + i[66] + i[152] + i[66] + i[543],
    Ox = i[402] + i[66] + i[152] + i[66] + i[447] + i[66] + i[954],
    Ax = i[428] + i[22] + i[978] + i[22] + i[406] + i[22] + i[971] + i[22] + i[968],
    Sx = i[428] + i[22] + i[978] + i[22] + i[979] + i[22] + i[427],
    Dx = i[428] + i[22] + i[978] + i[22] + i[406] + i[22] + i[407],
    Ix = i[402] + i[66] + i[152] + i[66] + i[447] + i[66] + i[956],
    Lx = i[402] + i[66] + i[152] + i[66] + i[447] + i[66] + i[811],
    Rx = i[402] + i[66] + i[60],
    Px = i[402] + i[66] + i[60] + i[66] + i[824],
    kx = i[402] + i[66] + i[60] + i[66] + i[445],
    Cx = i[428] + i[22] + i[527] + i[22] + i[975],
    Nx = i[402] + i[66] + i[60] + i[66] + i[456],
    Bx = i[428] + i[22] + i[527] + i[22] + i[977],
    Fx = i[402] + i[66] + i[60] + i[66] + i[543],
    $x = i[428] + i[22] + i[527] + i[22] + i[977] + i[22] + i[92],
    Gx = i[428] + i[22] + i[527] + i[22] + i[406] + i[22] + i[971],
    Hx = i[402] + i[66] + i[60] + i[66] + i[447] + i[66] + i[954],
    Xx = i[428] + i[22] + i[527] + i[22] + i[406] + i[22] + i[971] + i[22] + i[968],
    Wx = i[428] + i[22] + i[527] + i[22] + i[979] + i[22] + i[427],
    Ux = i[402] + i[66] + i[60] + i[66] + i[458] + i[66] + i[555],
    Yx = i[428] + i[22] + i[527] + i[22] + i[979] + i[22] + i[511],
    jx = i[428] + i[22] + i[527] + i[22] + i[406] + i[22] + i[407],
    Zx = i[402] + i[66] + i[60] + i[66] + i[447] + i[66] + i[956],
    Qx = i[402] + i[66] + i[60] + i[66] + i[447] + i[66] + i[811],
    Vx = i[424] + i[22] + i[542],
    Kx = i[424] + i[22] + i[425] + i[22] + i[968] + i[22] + i[270],
    zx = i[555],
    Jx = i[84] + i[85] + i[89],
    qx = i[960] + i[22] + i[542] + i[22] + i[406] + i[22] + i[971],
    tm = i[618] + i[1] + i[472],
    im = i[612] + i[14] + i[336] + i[78] + i[994],
    nm = i[425] + i[22] + i[426],
    em = i[425] + i[22] + i[427],
    sm = i[425] + i[22] + i[968] + i[22] + i[270],
    hm = i[425] + i[22] + i[968] + i[22] + i[303],
    rm = i[84] + i[61] + i[90],
    am = i[84] + i[85] + i[86],
    om = i[970] + i[24] + i[135],
    fm = i[960] + i[22] + i[976],
    cm = i[960] + i[22] + i[957],
    um = i[614] + i[211] + i[233],
    _m = i[960] + i[22] + i[950],
    lm = i[377] + i[73] + i[615],
    dm = i[960] + i[22] + i[968] + i[22] + i[270],
    vm = i[941],
    bm = i[960] + i[22] + i[425] + i[22] + i[427],
    ym = i[960] + i[22] + i[425] + i[22] + i[968] + i[22] + i[270],
    gm = i[960] + i[22] + i[425] + i[22] + i[968] + i[22] + i[303],
    Em = i[995] + i[22] + i[427],
    xm = i[995] + i[22] + i[427] + i[22] + i[535] + i[22] + i[536],
    mm = i[996],
    pm = i[22] + i[115] + i[138],
    Mm = i[972] + i[22] + i[427],
    wm = i[972] + i[22] + i[511],
    Tm = i[542],
    Om = i[22] + i[76] + i[997],
    Am = i[921] + i[22] + i[979] + i[22] + i[427],
    Sm = i[998] + i[22] + i[986] + i[22] + i[999],
    Dm = i[959] + i[78] + i[166],
    Im = i[921] + i[22] + i[977],
    Lm = i[921] + i[22] + i[977] + i[22] + i[92],
    Rm = i[921] + i[22] + i[979] + i[22] + i[511],
    Pm = i[921] + i[22] + i[406] + i[22] + i[971],
    km = i[921] + i[22] + i[406] + i[22] + i[971] + i[22] + i[968],
    Cm = i[406] + i[22] + i[412],
    Nm = i[468] + i[22] + i[972] + i[22] + i[427],
    Bm = i[468] + i[22] + i[972] + i[22] + i[511],
    Fm = i[468] + i[22] + i[542],
    $m = i[468] + i[22] + i[542] + i[22] + i[406] + i[22] + i[971],
    Gm = i[468] + i[22] + i[623] + i[22] + i[183],
    Hm = i[468] + i[22] + i[996],
    Xm = i[1e3] + i[51] + i[1001],
    Wm = i[22] + i[275] + i[270],
    Um = i[953],
    Ym = i[22] + i[404] + i[107],
    jm = i[417] + i[22] + i[1002],
    Zm = i[152] + i[33] + i[1003],
    Qm = i[60] + i[33] + i[1003],
    Vm = i[152] + i[33] + i[142] + i[28] + i[868],
    Km = i[417] + i[22] + i[527] + i[22] + i[634] + i[22] + i[417],
    zm = i[60] + i[33] + i[142] + i[28] + i[868],
    Jm = i[417] + i[22] + i[1004] + i[22] + i[1005],
    qm = i[417] + i[22] + i[527] + i[22] + i[992],
    tp = i[406] + i[22] + i[407],
    ip = i[152] + i[33] + i[1003] + i[85] + i[89],
    np = i[152] + i[33] + i[1003] + i[14] + i[496],
    ep = i[152] + i[33] + i[1003] + i[85] + i[549],
    sp = i[152] + i[33] + i[1003] + i[85] + i[549] + i[85] + i[86],
    hp = i[152] + i[33] + i[1003] + i[14] + i[1006],
    rp = i[152] + i[33] + i[1003] + i[61] + i[548] + i[1] + i[472],
    ap = i[428] + i[22] + i[978] + i[22] + i[979] + i[22] + i[511],
    op = i[428] + i[22] + i[978] + i[22] + i[406] + i[22] + i[971],
    fp = i[152] + i[33] + i[1003] + i[38] + i[625] + i[107] + i[547],
    cp = i[152] + i[33] + i[1003] + i[38] + i[625] + i[545] + i[546],
    up = i[152] + i[33] + i[1003] + i[38] + i[625] + i[1] + i[544],
    _p = i[60] + i[33] + i[1003] + i[85] + i[89],
    lp = i[428] + i[22] + i[527] + i[22] + i[968],
    dp = i[60] + i[33] + i[1003] + i[14] + i[496],
    vp = i[60] + i[33] + i[1003] + i[85] + i[549],
    bp = i[60] + i[33] + i[1003] + i[85] + i[549] + i[85] + i[86],
    yp = i[60] + i[33] + i[1003] + i[14] + i[1006],
    gp = i[60] + i[33] + i[1003] + i[14] + i[1006] + i[85] + i[86],
    Ep = i[60] + i[33] + i[1003] + i[61] + i[548] + i[1] + i[472],
    xp = i[60] + i[33] + i[1003] + i[61] + i[548] + i[488] + i[516],
    mp = i[60] + i[33] + i[1003] + i[38] + i[625] + i[107] + i[547],
    pp = i[428] + i[22] + i[527] + i[22] + i[406] + i[22] + i[412],
    Mp = i[60] + i[33] + i[1003] + i[38] + i[625] + i[545] + i[546],
    wp = i[60] + i[33] + i[1003] + i[38] + i[625] + i[1] + i[544],
    Tp = i[907] + i[38] + i[1007],
    Op = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[965] + i[22] + i[961],
    Ap = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[91] + i[22] + i[439],
    Sp = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[91] + i[22] + i[92],
    Dp = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[957],
    Ip = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[950],
    Lp = i[957],
    Rp = i[542] + i[22] + i[427],
    Pp = i[542] + i[22] + i[406] + i[22] + i[971],
    kp = i[610] + i[85] + i[617],
    Cp = i[921] + i[22] + i[975],
    Np = i[406] + i[22] + i[971] + i[22] + i[407],
    Bp = i[428] + i[22] + i[978] + i[22] + i[406] + i[22] + i[412],
    Fp = i[428] + i[22] + i[527] + i[22] + i[429],
    $p = i[428] + i[22] + i[527] + i[22] + i[975] + i[22] + i[92],
    Gp = i[610] + i[1] + i[2] + i[95] + i[96],
    Hp = i[610] + i[85] + i[89],
    Xp = i[26] + i[610] + i[1] + i[170],
    Wp = i[887],
    Up = i[22] + i[76] + i[1008],
    Yp = i[174] + i[51] + i[1009] + i[24] + i[25] + i[1] + i[200],
    jp = i[128] + i[1] + i[170],
    Zp = i[1010] + i[38] + i[1007],
    Qp = i[1010] + i[51] + i[1009] + i[24] + i[65],
    Vp = i[895] + i[24] + i[65],
    Kp = i[128] + i[51] + i[1009],
    zp = i[137],
    Jp = i[26] + i[202] + i[51] + i[945],
    qp = i[26] + i[379] + i[14] + i[496] + i[270],
    tM = i[26] + i[202] + i[85] + i[541] + i[14] + i[496] + i[303],
    iM = i[315] + i[22] + i[1011] + i[22] + i[1012],
    nM = i[22] + i[76] + i[33] + i[1001],
    eM = i[483] + i[1] + i[88],
    sM = i[26] + i[471] + i[1] + i[472],
    hM = i[26] + i[471] + i[1] + i[472] + i[51] + i[497] + i[203] + i[237],
    rM = i[26] + i[379] + i[1] + i[472],
    aM = i[26] + i[379] + i[51] + i[495],
    oM = i[26] + i[379] + i[14] + i[496] + i[303],
    fM = i[501] + i[78] + i[502] + i[1] + i[2],
    cM = i[26] + i[610] + i[51] + i[504],
    uM = i[55] + i[1013],
    _M = i[22] + i[76] + i[33] + i[404],
    lM = i[26] + i[824],
    dM = i[26] + i[610] + i[85] + i[290],
    vM = i[22] + i[551] + i[51] + i[504],
    bM = i[77] + i[203] + i[1014] + i[51] + i[504],
    yM = i[26] + i[610] + i[61] + i[548] + i[488] + i[516],
    gM = i[26] + i[458] + i[488] + i[516],
    EM = i[26] + i[959] + i[78] + i[166],
    xM = i[26] + i[447] + i[211] + i[233],
    mM = i[26] + i[458] + i[1] + i[472],
    pM = i[85] + i[290],
    MM = i[61] + i[548] + i[488] + i[516],
    wM = i[84],
    TM = i[1015] + i[78] + i[236],
    OM = i[26] + i[84] + i[85] + i[89],
    AM = i[26] + i[84] + i[61] + i[90],
    SM = i[26] + i[84],
    DM = i[969] + i[22] + i[961],
    IM = i[1016],
    LM = i[238] + i[33] + i[1017],
    RM = i[238] + i[51] + i[1018],
    PM = i[1019],
    kM = i[458] + i[78] + i[236],
    CM = i[26] + i[84] + i[85] + i[86],
    NM = i[61] + i[1020],
    BM = i[26] + i[610] + i[61] + i[1021] + i[33] + i[1003],
    FM = i[903] + i[51] + i[504],
    $M = i[476] + i[61] + i[1021] + i[33] + i[1003],
    GM = i[26] + i[610] + i[78] + i[76] + i[33] + i[1003],
    HM = i[476] + i[78] + i[76] + i[33] + i[1003],
    XM = i[26] + i[152] + i[33] + i[1003] + i[14] + i[496],
    WM = i[26] + i[152] + i[33] + i[1003] + i[85] + i[89],
    UM = i[26] + i[152] + i[33] + i[1003] + i[85] + i[617],
    YM = i[152] + i[33] + i[1003] + i[85] + i[897],
    jM = i[152] + i[33] + i[1003] + i[61] + i[548] + i[488] + i[516],
    ZM = i[152] + i[33] + i[1003] + i[38] + i[534],
    QM = i[26] + i[60] + i[33] + i[1003],
    VM = i[60] + i[33] + i[1003] + i[38] + i[534],
    KM = i[26] + i[60] + i[33] + i[1003] + i[85] + i[617],
    zM = i[26] + i[60] + i[33] + i[1003] + i[85] + i[89],
    JM = i[60] + i[33] + i[1003] + i[85] + i[897],
    qM = i[33] + i[1003] + i[85] + i[549],
    tw = i[33] + i[1003] + i[85] + i[549] + i[85] + i[86],
    iw = i[33] + i[1003] + i[85] + i[897],
    nw = i[33] + i[1003] + i[38] + i[625] + i[107] + i[547],
    ew = i[33] + i[1003] + i[38] + i[625] + i[107] + i[547] + i[14] + i[496],
    sw = i[33] + i[1003] + i[61] + i[548] + i[1] + i[472],
    hw = i[33] + i[1003] + i[61] + i[548] + i[488] + i[516],
    rw = i[33] + i[1003] + i[38] + i[625] + i[1] + i[544],
    aw = i[33] + i[1003] + i[38] + i[625] + i[545] + i[546],
    ow = i[33] + i[1003] + i[14] + i[1006],
    fw = i[33] + i[1003] + i[14] + i[1006] + i[85] + i[86],
    cw = i[26] + i[152] + i[33] + i[1003],
    uw = i[475] + i[33] + i[1003],
    _w = i[26] + i[543],
    lw = i[61] + i[1021] + i[33] + i[1003],
    dw = i[78] + i[76] + i[33] + i[1003],
    vw = i[1022],
    bw = i[3] + i[28] + i[1023] + i[24] + i[111] + i[51] + i[504],
    yw = i[0] + i[24] + i[452] + i[85] + i[1024],
    gw = i[3] + i[24] + i[1025] + i[24] + i[111],
    Ew = i[1026] + i[38] + i[1027],
    xw = i[1028] + i[270],
    mw = i[22] + i[1029] + i[78] + i[531] + i[24] + i[111],
    pw = i[3] + i[38] + i[1030] + i[51] + i[504],
    Mw = i[475] + i[28] + i[868],
    ww = i[417] + i[22] + i[187] + i[22] + i[1031],
    Tw = i[417] + i[22] + i[187] + i[22] + i[1032] + i[22] + i[521],
    Ow = i[417] + i[22] + i[187] + i[22] + i[521] + i[22] + i[520],
    Aw = i[417] + i[22] + i[187] + i[22] + i[1002] + i[22] + i[144],
    Sw = i[417] + i[22] + i[187] + i[22] + i[423] + i[22] + i[520],
    Dw = i[417] + i[22] + i[187] + i[22] + i[520] + i[22] + i[521],
    Iw = i[417] + i[22] + i[187] + i[22] + i[1002] + i[22] + i[148],
    Lw = i[417] + i[22] + i[187] + i[22] + i[423],
    Rw = i[417] + i[22] + i[187] + i[22] + i[423] + i[22] + i[521],
    Pw = i[1033],
    kw = i[417] + i[22] + i[187] + i[22] + i[1002] + i[22] + i[151],
    Cw = i[417] + i[22] + i[187] + i[22] + i[1002] + i[22] + i[150],
    Nw = i[1034] + i[22] + i[1035],
    Bw = i[1036] + i[22] + i[1035],
    Fw = i[417] + i[22] + i[990],
    $w = i[417] + i[22] + i[990] + i[22] + i[1037],
    Gw = i[417] + i[22] + i[990] + i[22] + i[414],
    Hw = i[26] + i[907] + i[28] + i[908],
    Xw = i[45] + i[51] + i[869] + i[28] + i[908],
    Ww = i[1038] + i[51] + i[1039],
    Uw = i[3] + i[848] + i[496],
    Yw = i[45] + i[24] + i[1040] + i[14] + i[1041],
    jw = i[3] + i[51] + i[869] + i[38] + i[1007],
    Zw = i[220] + i[51] + i[869] + i[38] + i[1007],
    Qw = i[476] + i[24] + i[273],
    Vw = i[1e3] + i[51] + i[869] + i[38] + i[1007],
    Kw = i[417] + i[22] + i[187] + i[22] + i[1032],
    zw = i[382] + i[66],
    Jw = i[128] + i[85] + i[532] + i[78] + i[166],
    qw = i[991] + i[28] + i[1023],
    tT = i[903] + i[85] + i[1024],
    iT = i[22] + i[76] + i[1042],
    nT = i[483] + i[51] + i[504],
    eT = i[551],
    sT = i[109] + i[270],
    hT = i[109] + i[303],
    rT = i[993],
    aT = i[3] + i[107] + i[268] + i[24] + i[1025] + i[24] + i[111],
    oT = i[3] + i[38] + i[1030] + i[24] + i[1043],
    fT = i[417] + i[22] + i[187] + i[22] + i[1032] + i[22] + i[520],
    cT = i[1044] + i[22] + i[417] + i[22] + i[1045] + i[22] + i[852],
    uT = i[55] + i[1046],
    _T = i[417] + i[22] + i[1047] + i[22] + i[1048],
    lT = i[417] + i[22] + i[418] + i[22] + i[1049],
    dT = i[417] + i[22] + i[418] + i[22] + i[960] + i[22] + i[961],
    vT = i[55] + i[1050] + i[1051] + i[275],
    bT = i[55] + i[1052] + i[28] + i[206],
    yT = i[22] + i[1053],
    gT = i[1054],
    ET = i[1055],
    xT = i[1056],
    mT = i[48] + i[28] + i[29],
    pT = i[180] + i[78] + i[1057],
    MT = i[238],
    wT = i[3] + i[107] + i[1058] + i[95] + i[1059],
    TT = i[1060] + i[33] + i[1061],
    OT = i[138] + i[237],
    AT = i[220] + i[488] + i[899],
    ST = i[220] + i[138] + i[237],
    DT = i[22] + i[76] + i[51] + i[210],
    IT = i[1062],
    LT = i[232] + i[24] + i[65],
    RT = i[174] + i[28] + i[221] + i[1] + i[1063],
    PT = i[174] + i[95] + i[1064] + i[28] + i[29],
    kT = i[1e3] + i[38] + i[1065] + i[51] + i[504],
    CT = i[1066],
    NT = i[1067],
    BT = i[1068],
    FT = i[1069],
    $T = i[1038] + i[38] + i[1070] + i[61] + i[1021],
    GT = i[1071] + i[24] + i[111] + i[28] + i[1072],
    HT = i[104] + i[28] + i[105] + i[1] + i[170],
    XT = i[128] + i[28] + i[221],
    WT = i[1073] + i[51] + i[504],
    UT = i[48] + i[33] + i[70],
    YT = i[22] + i[76] + i[51] + i[1074] + i[51] + i[504],
    jT = i[5] + i[38] + i[1075],
    ZT = i[460] + i[78] + i[76] + i[38] + i[1076],
    QT = i[326] + i[33] + i[142],
    VT = i[326] + i[95] + i[336],
    KT = i[326] + i[14] + i[333],
    zT = i[939] + i[85] + i[290],
    JT = i[22] + i[76] + i[1077],
    qT = i[45] + i[95] + i[884],
    tO = i[326] + i[78] + i[76] + i[14] + i[1078],
    iO = i[1016] + i[78] + i[76],
    nO = i[326] + i[33] + i[70],
    eO = i[1079] + i[22] + i[1080],
    sO = i[288] + i[85] + i[337],
    hO = i[22] + i[1081] + i[33] + i[70],
    rO = i[1082] + i[270],
    aO = i[1083],
    oO = i[1082] + i[78] + i[76],
    fO = i[60] + i[107] + i[314] + i[359],
    cO = i[503] + i[239] + i[1084],
    uO = i[1085],
    _O = i[1086],
    lO = i[834] + i[85] + i[1087],
    dO = i[45] + i[163] + i[1088],
    vO = i[45] + i[85] + i[1089],
    bO = i[1090] + i[85] + i[1087] + i[33] + i[508],
    yO = i[77] + i[38] + i[534],
    gO = i[45] + i[203] + i[1091],
    EO = i[22] + i[1092] + i[61] + i[866],
    xO = i[172] + i[1] + i[1093] + i[95] + i[1064],
    mO = i[1094],
    pO = i[107] + i[1095] + i[42] + i[28] + i[1096] + i[477],
    MO = i[172] + i[85] + i[357],
    wO = i[1097] + i[22] + i[1098],
    TO = i[85] + i[617],
    OO = i[1097] + i[22] + i[1099],
    AO = i[38] + i[625],
    SO = i[85] + i[897],
    DO = i[220] + i[28] + i[868],
    IO = i[28] + i[868],
    LO = i[883] + i[1100] + i[878],
    RO = i[1101] + i[24] + i[65],
    PO = i[1102] + i[28] + i[103] + i[38] + i[1007],
    kO = i[38] + i[1007] + i[42] + i[1] + i[1103] + i[99] + i[142] + i[42] + i[28] + i[103],
    CO = i[610] + i[28] + i[221],
    NO = i[1101] + i[203] + i[237],
    BO = i[1104] + i[28] + i[868],
    FO = i[1105],
    $O = i[1106] + i[28] + i[1107],
    GO = i[1108] + i[73] + i[1109],
    HO = i[1069] + i[24] + i[273],
    XO = i[263] + i[1] + i[1110],
    WO = i[434] + i[24] + i[819],
    UO = i[22] + i[76] + i[51] + i[265] + i[203] + i[237],
    YO = i[934] + i[203] + i[237],
    jO = i[165] + i[1] + i[200] + i[107] + i[201],
    ZO = i[171] + i[95] + i[96] + i[1] + i[200] + i[107] + i[201],
    QO = i[22] + i[825] + i[51] + i[504],
    VO = i[22] + i[1073] + i[51] + i[504],
    KO = i[1111] + i[22] + i[1112],
    zO = i[1113] + i[73] + i[1109],
    JO = i[935] + i[22] + i[937] + i[22] + i[469],
    qO = i[935] + i[22] + i[937] + i[22] + i[430],
    tA = i[22] + i[76] + i[1114],
    iA = i[935] + i[22] + i[187] + i[22] + i[922],
    nA = i[935] + i[22] + i[187] + i[22] + i[389],
    eA = i[610] + i[61] + i[207],
    sA = i[1115] + i[1116],
    hA = i[488] + i[899] + i[315],
    rA = i[861] + i[22] + i[468] + i[22] + i[144],
    aA = i[1117] + i[93],
    oA = i[1118] + i[42] + i[206] + i[66] + i[115] + i[823] + i[42] + i[1119] + i[216] + i[327],
    fA = i[662],
    cA = i[197] + i[216] + i[488] + i[822] + i[216] + i[138] + i[1120] + i[216] + i[51] + i[1121],
    uA = i[109] + i[58] + i[1122] + i[1123] + i[63],
    _A = i[55] + i[1124],
    lA = i[861] + i[22] + i[468] + i[22] + i[148],
    dA = i[22] + i[1125] + i[24] + i[1126],
    vA = i[197] + i[216] + i[488] + i[822] + i[216] + i[138] + i[1120],
    bA = i[57] + i[58] + i[206] + i[112] + i[206] + i[112] + i[206] + i[112] + i[206] + i[63],
    yA = i[22] + i[383],
    gA = i[383],
    EA = i[22] + i[131],
    xA = i[22] + i[119],
    mA = i[1127],
    pA = i[22] + i[76] + i[318] + i[14],
    MA = i[1010],
    wA = i[66] + i[197] + i[216] + i[488] + i[822] + i[216] + i[138] + i[1120] + i[42] + i[480],
    TA = i[1118] + i[224] + i[317] + i[225] + i[618] + i[216] + i[555] + i[161] + i[57] + i[58] + i[206] + i[112] + i[206] + i[112] + i[206] + i[112] + i[206] + i[66] + i[275] + i[63],
    OA = i[66] + i[197] + i[216] + i[488] + i[822] + i[216] + i[138] + i[1120],
    AA = i[1118] + i[224] + i[206] + i[225],
    SA = i[1128],
    DA = i[224] + i[1118] + i[42] + i[284] + i[823] + i[42] + i[1129] + i[216] + i[450] + i[58] + i[206] + i[66] + i[318] + i[112] + i[206] + i[112] + i[206] + i[66] + i[318] + i[112] + i[317] + i[63],
    IA = i[66] + i[197] + i[216] + i[488] + i[822] + i[216] + i[138] + i[1120] + i[224] + i[1127],
    LA = i[1118] + i[224] + i[317] + i[225],
    RA = i[224] + i[1118] + i[42] + i[206] + i[66] + i[284] + i[823] + i[42] + i[557],
    PA = i[22] + i[480],
    kA = i[22] + i[76] + i[986],
    CA = i[22] + i[76] + i[33] + i[1130],
    NA = i[1131],
    BA = i[66] + i[197] + i[216] + i[488] + i[822] + i[216] + i[85] + i[253] + i[51] + i[1132],
    FA = i[1133] + i[161] + i[115] + i[93] + i[1134] + i[518] + i[161] + i[818] + i[225] + i[1135] + i[216] + i[1136] + i[161] + i[377] + i[216] + i[1135] + i[225] + i[1135] + i[216] + i[379] + i[1137] + i[466] + i[42] + i[206] + i[93] + i[42] + i[206] + i[93] + i[42] + i[317] + i[93] + i[1134] + i[618] + i[216] + i[555] + i[161] + i[57] + i[58] + i[1138] + i[59] + i[1138] + i[59] + i[1138] + i[59] + i[206] + i[66] + i[284] + i[1139] + i[377] + i[216] + i[156] + i[161] + i[404] + i[93] + i[225] + i[1133] + i[161] + i[317] + i[93] + i[225],
    $A = i[66] + i[197] + i[216] + i[488] + i[822] + i[216] + i[85] + i[253] + i[51] + i[1132] + i[66] + i[1127] + i[1140] + i[197] + i[216] + i[488] + i[822] + i[216] + i[85] + i[253] + i[51] + i[1132] + i[224] + i[1127],
    GA = i[1133] + i[216] + i[118] + i[161] + i[318] + i[93] + i[225],
    HA = i[1133] + i[216] + i[119] + i[161] + i[318] + i[93] + i[225],
    XA = i[66] + i[197] + i[216] + i[488] + i[822] + i[216] + i[85] + i[253] + i[24] + i[1126],
    WA = i[224] + i[1118] + i[42] + i[284] + i[823] + i[42] + i[1129] + i[216] + i[450] + i[58] + i[206] + i[66] + i[318] + i[112] + i[206] + i[112] + i[206] + i[66] + i[318] + i[112] + i[317] + i[1139],
    UA = i[22] + i[136] + i[107] + i[370] + i[85] + i[353],
    YA = i[22] + i[134] + i[107] + i[370] + i[85] + i[353],
    jA = i[197] + i[216] + i[488] + i[822] + i[216] + i[85] + i[253] + i[24] + i[1126],
    ZA = i[22] + i[76] + i[1141],
    QA = i[879] + i[95] + i[1142],
    VA = i[51] + i[1143],
    KA = i[1069] + i[24] + i[1043],
    zA = i[383] + i[1] + i[806],
    JA = i[1144] + i[22] + i[1145],
    qA = i[1144] + i[22] + i[187],
    tS = i[209] + i[631] + i[73] + i[877],
    iS = i[174] + i[33] + i[70] + i[85] + i[1146],
    nS = i[174] + i[33] + i[70] + i[28] + i[1023],
    eS = i[22] + i[60] + i[1147],
    sS = i[22] + i[152] + i[1147],
    hS = i[22] + i[60] + i[1148],
    rS = i[22] + i[152] + i[85] + i[290],
    aS = i[60] + i[95] + i[859],
    oS = i[1149],
    fS = i[500] + i[78] + i[644],
    cS = i[22] + i[152] + i[1148],
    uS = i[22] + i[60] + i[85] + i[290],
    _S = i[1150] + i[22] + i[1151] + i[22] + i[429] + i[22] + i[1152],
    lS = i[1150] + i[22] + i[1151] + i[22] + i[429] + i[22] + i[1153],
    dS = i[1150] + i[22] + i[976] + i[22] + i[1151] + i[22] + i[429] + i[22] + i[1153],
    vS = i[1154],
    bS = i[263],
    yS = i[3] + i[24] + i[1025] + i[24] + i[273],
    gS = i[445] + i[211] + i[233],
    ES = i[445] + i[355] + i[856],
    xS = i[180] + i[24] + i[25] + i[1] + i[200] + i[107] + i[201],
    mS = i[875],
    pS = i[1155] + i[38] + i[39],
    MS = i[22] + i[336] + i[275] + i[1156] + i[95] + i[98],
    wS = i[172] + i[107] + i[1157],
    TS = i[128] + i[107] + i[1157],
    OS = i[1158],
    AS = i[475] + i[24] + i[111],
    SS = i[227] + i[107] + i[1159],
    DS = i[3] + i[107] + i[268] + i[107] + i[1159] + i[85] + i[897],
    IS = i[934] + i[24] + i[111],
    LS = i[107] + i[1159] + i[24] + i[452] + i[95] + i[1064],
    RS = i[322],
    PS = i[22] + i[76] + i[1160],
    kS = i[1038] + i[38] + i[1070] + i[78] + i[76],
    CS = i[22] + i[76] + i[51] + i[265] + i[24] + i[1025],
    NS = i[1161] + i[24] + i[111],
    BS = i[60] + i[38] + i[851] + i[24] + i[111],
    FS = i[1162] + i[22] + i[1163] + i[22] + i[1164],
    $S = i[220] + i[28] + i[868] + i[51] + i[94] + i[95] + i[1064],
    GS = i[1165],
    HS = i[1166],
    XS = i[22] + i[76] + i[1167],
    WS = i[3] + i[107] + i[268] + i[85] + i[86],
    US = i[417] + i[22] + i[406] + i[22] + i[971] + i[22] + i[968],
    YS = i[1] + i[1168] + i[28] + i[868] + i[95] + i[1064],
    jS = i[475] + i[73] + i[127],
    ZS = i[55] + i[317] + i[107] + i[1169],
    QS = i[55] + i[28] + i[1170],
    VS = i[1171],
    KS = i[263] + i[24] + i[111],
    zS = i[921] + i[22] + i[975] + i[22] + i[92],
    JS = i[526] + i[22] + i[1172] + i[22] + i[527],
    qS = i[220] + i[85] + i[617] + i[51] + i[94] + i[95] + i[1064],
    tD = i[220] + i[38] + i[625] + i[51] + i[94] + i[95] + i[1064],
    iD = i[1] + i[1168] + i[38] + i[625] + i[95] + i[1064],
    nD = i[1173],
    eD = i[28] + i[868] + i[315],
    sD = i[475] + i[73] + i[1174] + i[38] + i[625],
    hD = i[1] + i[1168] + i[85] + i[1175] + i[28] + i[868] + i[95] + i[1064],
    rD = i[960] + i[22] + i[1176] + i[22] + i[1177] + i[22] + i[1178] + i[22] + i[1179] + i[22] + i[1180],
    aD = i[1181],
    oD = i[197] + i[216] + i[38] + i[1007] + i[28] + i[1182],
    fD = i[1183] + i[1184] + i[1185] + i[28] + i[42] + i[317] + i[93],
    cD = i[275] + i[93],
    uD = i[1135] + i[85] + i[541],
    _D = i[1186],
    lD = i[174] + i[163] + i[164] + i[1] + i[200],
    dD = i[1187],
    vD = i[50] + i[28] + i[1188],
    bD = i[1189],
    yD = i[202] + i[28] + i[1023],
    gD = i[202] + i[85] + i[1146],
    ED = i[220] + i[73] + i[1190],
    xD = i[1191],
    mD = i[48] + i[28] + i[1188],
    pD = i[174] + i[85] + i[89] + i[1] + i[200],
    MD = i[220] + i[805],
    wD = i[174] + i[1] + i[286] + i[14] + i[336] + i[211] + i[810],
    TD = i[48] + i[28] + i[1188] + i[211] + i[1192] + i[1] + i[286] + i[14] + i[336] + i[211] + i[810],
    OD = i[1193],
    AD = i[77] + i[78] + i[236],
    SD = i[45] + i[28] + i[1194],
    DD = i[38] + i[1007] + i[28] + i[1182],
    ID = i[640] + i[28] + i[1182],
    LD = i[45] + i[28] + i[1072],
    RD = i[417] + i[22] + i[418],
    PD = i[1195] + i[85] + i[880] + i[138] + i[881],
    kD = i[1196] + i[85] + i[290],
    CD = i[331] + i[78] + i[76] + i[1] + i[1197],
    ND = i[172] + i[85] + i[357] + i[51] + i[94] + i[95] + i[1064],
    BD = i[28] + i[1188] + i[95] + i[1064],
    FD = i[1198] + i[366] + i[367],
    $D = i[1199] + i[95] + i[440],
    GD = i[813],
    HD = i[1200],
    XD = i[1199] + i[42] + i[503] + i[477],
    WD = i[42] + i[123] + i[42],
    UD = i[271] + i[85] + i[89],
    YD = i[269] + i[28] + i[1096],
    jD = i[934] + i[107] + i[1201] + i[28] + i[221],
    ZD = i[1097] + i[22] + i[1172] + i[22] + i[1202],
    QD = i[27] + i[95] + i[1064] + i[28] + i[29],
    VD = i[1097] + i[22] + i[1203],
    KD = i[331] + i[28] + i[1096],
    zD = i[104] + i[28] + i[105] + i[73] + i[854] + i[163] + i[1088] + i[315],
    JD = i[22] + i[1204],
    qD = i[22] + i[1205] + i[24] + i[1206],
    tI = i[22] + i[76] + i[51] + i[1103] + i[28] + i[1188],
    iI = i[45] + i[28] + i[1023] + i[24] + i[111] + i[28] + i[1072],
    nI = i[45] + i[61] + i[1021],
    eI = i[45] + i[1] + i[1207] + i[24] + i[111],
    sI = i[526] + i[22] + i[1208],
    hI = i[45] + i[28] + i[1023] + i[24] + i[111],
    rI = i[55] + i[1209],
    aI = i[77] + i[1] + i[265] + i[28] + i[221],
    oI = i[45] + i[85] + i[1210],
    fI = i[45] + i[24] + i[111] + i[73] + i[1211],
    cI = i[1005] + i[22] + i[182],
    uI = i[45] + i[24] + i[111] + i[33] + i[1212],
    _I = i[984],
    lI = i[162] + i[24] + i[273],
    dI = i[289] + i[85] + i[532],
    vI = i[351] + i[85] + i[532],
    bI = i[162] + i[138] + i[236] + i[24] + i[273],
    yI = i[1005] + i[22] + i[1172] + i[22] + i[1202],
    gI = i[1213],
    EI = i[904],
    xI = i[1005] + i[22] + i[1203],
    mI = i[1005] + i[22] + i[1172] + i[22] + i[1214],
    pI = i[424] + i[22] + i[1215] + i[22] + i[975] + i[22] + i[427],
    MI = i[424] + i[22] + i[1215] + i[22] + i[979] + i[22] + i[427],
    wI = i[1216],
    TI = i[1215] + i[22] + i[424] + i[22] + i[536] + i[22] + i[1217],
    OI = i[1218],
    AI = i[1215] + i[22] + i[424] + i[22] + i[536],
    SI = i[1215] + i[22] + i[424] + i[22] + i[536] + i[22] + i[1219],
    DI = i[22] + i[1220] + i[95] + i[98],
    II = i[1221] + i[22] + i[1202],
    LI = i[22] + i[196] + i[1222] + i[279],
    RI = i[424] + i[22] + i[1215] + i[22] + i[975],
    PI = i[22] + i[1071],
    kI = i[1223] + i[85] + i[357] + i[203] + i[237],
    CI = i[104] + i[28] + i[105] + i[163] + i[1088] + i[315],
    NI = i[327] + i[73] + i[1224],
    BI = i[1221] + i[22] + i[1225],
    FI = i[82] + i[73] + i[127],
    $I = i[1226],
    GI = i[22] + i[109] + i[355] + i[1227] + i[38] + i[1228],
    HI = i[22] + i[76] + i[744],
    XI = i[144] + i[22] + i[148],
    WI = i[1229] + i[216] + i[1054],
    UI = i[1230] + i[216] + i[1054],
    YI = i[1231] + i[216] + i[1054],
    jI = i[1232] + i[216] + i[1054],
    ZI = i[1233] + i[58] + i[180] + i[224] + i[503] + i[239] + i[1234] + i[225] + i[1235] + i[1236] + i[59] + i[632] + i[1237] + i[1116] + i[206] + i[1238] + i[1239] + i[1240] + i[1241] + i[1242] + i[196] + i[1243] + i[15] + i[318] + i[239] + i[565] + i[1241] + i[1244] + i[143] + i[115] + i[623] + i[206] + i[98] + i[115] + i[61] + i[94] + i[1245] + i[565] + i[632] + i[1246] + i[143] + i[1247] + i[336] + i[1248] + i[140] + i[1249] + i[275] + i[1250] + i[1251] + i[579] + i[138] + i[1252] + i[239] + i[24] + i[1253] + i[24] + i[1116] + i[203] + i[1254] + i[1255] + i[15] + i[1077] + i[94] + i[1256] + i[336] + i[239] + i[829] + i[1257] + i[1258] + i[1259] + i[579] + i[33] + i[1260] + i[488] + i[196] + i[270] + i[404] + i[1261] + i[525] + i[1262] + i[146] + i[1263] + i[1116] + i[317] + i[1] + i[523] + i[1264] + i[140] + i[33] + i[317] + i[94] + i[33] + i[404] + i[1265] + i[366] + i[1241] + i[303] + i[1116] + i[51] + i[1266] + i[1267] + i[1268] + i[1269] + i[1270] + i[1271] + i[196] + i[1272] + i[196] + i[1273] + i[318] + i[1241] + i[239] + i[404] + i[1274] + i[1275] + i[1276] + i[1277] + i[275] + i[1278] + i[1279] + i[318] + i[42] + i[318] + i[59] + i[330],
    QI = i[22] + i[109] + i[24] + i[111],
    VI = i[57] + i[58] + i[206] + i[112] + i[1280] + i[112] + i[206] + i[112] + i[317] + i[63],
    KI = i[55] + i[1281] + i[206],
    zI = i[45] + i[73] + i[1282],
    JI = i[22] + i[76] + i[1283],
    qI = i[976] + i[22] + i[1202],
    tL = i[1284] + i[22] + i[1202],
    iL = i[22] + i[76] + i[1285],
    nL = i[551] + i[51] + i[504],
    eL = i[22] + i[1286],
    sL = i[1287],
    hL = i[73] + i[1288] + i[95] + i[1064],
    rL = i[1221],
    aL = i[45] + i[85] + i[1289],
    oL = i[77] + i[85] + i[357],
    fL = i[1085] + i[33] + i[508],
    cL = i[1290] + i[22] + i[1291],
    uL = i[1290] + i[22] + i[244],
    _L = i[197] + i[216] + i[78] + i[1292],
    lL = i[1293] + i[22] + i[968] + i[22] + i[270],
    dL = i[1294] + i[22] + i[1295],
    vL = i[55] + i[1296],
    bL = i[317] + i[93] + i[42] + i[1183] + i[1184] + i[107] + i[565] + i[107] + i[565] + i[107] + i[565],
    yL = i[115] + i[93] + i[42] + i[404] + i[93],
    gL = i[3] + i[95] + i[1297],
    EL = i[1298],
    xL = i[612],
    mL = i[1299],
    pL = i[1300] + i[1301] + i[1302],
    ML = i[3] + i[78] + i[1292] + i[28] + i[221],
    wL = i[238] + i[1] + i[1303],
    TL = i[22] + i[1304],
    OL = i[1293] + i[22] + i[968] + i[22] + i[303],
    AL = i[22] + i[76] + i[577],
    SL = i[1305],
    DL = i[322] + i[78] + i[279],
    IL = i[77] + i[78] + i[1292],
    LL = i[48] + i[78] + i[279],
    RL = i[879] + i[78] + i[1292],
    PL = i[3] + i[78] + i[1292],
    kL = i[896] + i[78] + i[166],
    CL = i[846] + i[303],
    NL = i[1306],
    BL = i[22] + i[45] + i[61] + i[71] + i[78] + i[279],
    FL = i[631] + i[33] + i[1061],
    $L = i[326] + i[51] + i[94] + i[203] + i[252] + i[28] + i[29],
    GL = i[1101],
    HL = i[875] + i[66] + i[331] + i[66] + i[322],
    XL = i[875] + i[66] + i[1307],
    WL = i[875] + i[66] + i[331] + i[66] + i[1071],
    UL = i[875] + i[66] + i[1308],
    YL = i[875] + i[66] + i[1309],
    jL = i[984] + i[66] + i[331] + i[66] + i[322],
    ZL = i[984] + i[66] + i[1307],
    QL = i[984] + i[66] + i[331] + i[66] + i[1071],
    VL = i[984] + i[66] + i[128],
    KL = i[984] + i[66] + i[172],
    zL = i[1054] + i[66] + i[322],
    JL = i[1310],
    qL = i[1054] + i[66] + i[1071],
    tR = i[109] + i[66] + i[322],
    iR = i[1311],
    nR = i[1312],
    eR = i[976] + i[22] + i[1214],
    sR = i[109] + i[66] + i[1071],
    hR = i[1081] + i[66] + i[322],
    rR = i[1081] + i[66] + i[1071],
    aR = i[936] + i[66] + i[882],
    oR = i[883] + i[66] + i[907],
    fR = i[1085] + i[66] + i[322],
    cR = i[1085] + i[66] + i[1313],
    uR = i[1221] + i[22] + i[1214],
    _R = i[1085] + i[66] + i[1071],
    lR = i[277] + i[66] + i[257],
    dR = i[22] + i[1101] + i[85] + i[353],
    vR = i[934] + i[95] + i[1064] + i[203] + i[237],
    bR = i[3] + i[95] + i[1064] + i[95] + i[1314],
    yR = i[920] + i[95] + i[1315],
    gR = i[1150] + i[22] + i[536] + i[22] + i[1316],
    ER = i[1317],
    xR = i[1150] + i[22] + i[536] + i[22] + i[470],
    mR = i[1150] + i[22] + i[536] + i[22] + i[424],
    pR = i[202],
    MR = i[1318],
    wR = i[1319],
    TR = i[220] + i[66] + i[1320] + i[66] + i[883],
    OR = i[1150] + i[22] + i[536] + i[22] + i[1321] + i[22] + i[417],
    AR = i[220] + i[66] + i[883],
    SR = i[220] + i[66] + i[953],
    DR = i[1150] + i[22] + i[536] + i[22] + i[1321] + i[22] + i[406],
    IR = i[220] + i[66] + i[447],
    LR = i[1150] + i[22] + i[536] + i[22] + i[1321] + i[22] + i[1322] + i[22] + i[417],
    RR = i[1150] + i[22] + i[536] + i[22] + i[1321] + i[22] + i[921],
    PR = i[1150] + i[22] + i[536] + i[22] + i[1323],
    kR = i[24] + i[1103] + i[95] + i[1064],
    CR = i[85] + i[357] + i[95] + i[1064],
    NR = i[203] + i[1324] + i[95] + i[1064],
    BR = i[211] + i[1325] + i[623] + i[1326] + i[95] + i[1064],
    FR = i[107] + i[1327] + i[1] + i[286] + i[95] + i[1064],
    $R = i[28] + i[1328] + i[95] + i[1064],
    GR = i[78] + i[1292] + i[95] + i[1064],
    HR = i[73] + i[1224] + i[85] + i[357] + i[95] + i[1064],
    XR = i[24] + i[273] + i[95] + i[1064],
    WR = i[3] + i[870] + i[504],
    UR = i[349],
    YR = i[1329],
    jR = i[1330] + i[78] + i[166],
    ZR = i[1331],
    QR = i[154] + i[33] + i[1332],
    VR = i[1305] + i[38] + i[1333],
    KR = i[963] + i[22] + i[151],
    zR = i[963] + i[22] + i[147],
    JR = i[963] + i[22] + i[150],
    qR = i[963] + i[22] + i[145],
    tP = i[963] + i[22] + i[151] + i[22] + i[148],
    iP = i[963] + i[22] + i[151] + i[22] + i[150],
    nP = i[963] + i[22] + i[150] + i[22] + i[144],
    eP = i[963] + i[22] + i[150] + i[22] + i[151],
    sP = i[963] + i[22] + i[148] + i[22] + i[144],
    hP = i[963] + i[22] + i[148] + i[22] + i[151],
    rP = i[1334],
    aP = i[1335] + i[66] + i[1336],
    oP = i[998] + i[22] + i[187] + i[22] + i[1337],
    fP = i[998] + i[22] + i[187] + i[22] + i[1337] + i[22] + i[521],
    cP = i[1334] + i[66] + i[1241],
    uP = i[998] + i[22] + i[187] + i[22] + i[1337] + i[22] + i[520],
    _P = i[1334] + i[66] + i[1338],
    lP = i[998] + i[22] + i[187] + i[22] + i[1339] + i[22] + i[1340],
    dP = i[45] + i[355] + i[1341] + i[107] + i[943],
    vP = i[263] + i[85] + i[89],
    bP = i[22] + i[76] + i[318] + i[24],
    yP = i[45] + i[38] + i[1342],
    gP = i[3] + i[138] + i[237] + i[85] + i[89],
    EP = i[168] + i[1] + i[2] + i[107] + i[943],
    xP = i[22] + i[76] + i[51] + i[318],
    mP = i[3] + i[1343] + i[544],
    pP = i[3] + i[1344] + i[544],
    MP = i[3] + i[38] + i[1027] + i[78] + i[166],
    wP = i[1241] + i[488] + i[544],
    TP = i[1338] + i[488] + i[544],
    OP = i[607] + i[78] + i[166],
    AP = i[1345],
    SP = i[1346],
    DP = i[911] + i[38] + i[1027],
    IP = i[168] + i[51] + i[504],
    LP = i[22] + i[98] + i[217],
    RP = i[22] + i[15] + i[24],
    PP = i[624] + i[1347],
    kP = i[624] + i[1348],
    CP = i[349] + i[270],
    NP = i[22] + i[76] + i[1272],
    BP = i[349] + i[303],
    FP = i[22] + i[76] + i[1349],
    $P = i[1350] + i[61] + i[336],
    GP = i[22] + i[76] + i[318] + i[608] + i[38] + i[534],
    HP = i[934] + i[203] + i[1351] + i[138] + i[892],
    XP = i[22] + i[76] + i[763],
    WP = i[607] + i[107] + i[108],
    UP = i[484] + i[138] + i[237] + i[95] + i[1059],
    YP = i[484] + i[28] + i[868] + i[95] + i[1059],
    jP = i[939] + i[28] + i[1352] + i[61] + i[281],
    ZP = i[1097] + i[22] + i[1172] + i[22] + i[1214],
    QP = i[1353],
    VP = i[48],
    KP = i[1196] + i[38] + i[1027] + i[107] + i[108],
    zP = i[1354],
    JP = i[1355],
    qP = i[1356],
    tk = i[295] + i[85] + i[337],
    ik = i[45] + i[73] + i[1357],
    nk = i[22] + i[140] + i[206] + i[141],
    ek = i[610] + i[38] + i[1027] + i[107] + i[108],
    sk = i[322] + i[33] + i[1358],
    hk = i[51] + i[1359] + i[38] + i[1360],
    rk = i[1361],
    ak = i[1362],
    ok = i[1363],
    fk = i[1364] + i[22] + i[1365] + i[22] + i[1366],
    ck = i[1364] + i[22] + i[1365] + i[22] + i[1367],
    uk = i[950] + i[22] + i[536] + i[22] + i[1368],
    _k = i[506],
    lk = i[950] + i[22] + i[536] + i[22] + i[1369],
    dk = i[1370],
    vk = i[510] + i[85] + i[1371],
    bk = i[3] + i[73] + i[615],
    yk = i[156] + i[203] + i[237],
    gk = i[349] + i[317],
    Ek = i[349] + i[115],
    xk = i[417] + i[22] + i[418] + i[22] + i[938],
    mk = i[22] + i[98] + i[206] + i[51] + i[1372] + i[61] + i[207],
    pk = i[22] + i[76] + i[1373],
    Mk = i[137] + i[51] + i[1009] + i[28] + i[1107],
    wk = i[22] + i[829] + i[565] + i[95] + i[336] + i[51] + i[869],
    Tk = i[22] + i[76] + i[318] + i[73],
    Ok = i[1374],
    Ak = i[1375],
    Sk = i[1375] + i[270],
    Dk = i[1375] + i[303],
    Ik = i[45] + i[95] + i[1376],
    Lk = i[1196],
    Rk = i[1377] + i[95] + i[1378],
    Pk = i[1379],
    kk = i[937] + i[22] + i[130],
    Ck = i[1380],
    Nk = i[607] + i[203] + i[1381],
    Bk = i[607] + i[28] + i[1382],
    Fk = i[1383],
    $k = i[22] + i[1384] + i[61] + i[1385],
    Gk = i[1355] + i[33] + i[46],
    Hk = i[1386],
    Xk = i[939] + i[28] + i[1352],
    Wk = i[1119] + i[14] + i[333] + i[85] + i[1387],
    Uk = i[162] + i[38] + i[1333],
    Yk = i[22] + i[76] + i[318] + i[1332],
    jk = i[22] + i[15] + i[1388] + i[166],
    Zk = i[22] + i[1389],
    Qk = i[104] + i[28] + i[105] + i[95] + i[336] + i[28] + i[868],
    Vk = i[205] + i[42] + i[125],
    Kk = i[104] + i[28] + i[105] + i[51] + i[94] + i[78] + i[1390] + i[51] + i[1391] + i[61] + i[886] + i[85] + i[1392],
    zk = i[22] + i[1393],
    Jk = i[442] + i[138] + i[237],
    qk = i[104] + i[28] + i[105] + i[14] + i[333] + i[28] + i[868],
    tC = i[22] + i[152],
    iC = i[60] + i[1] + i[472],
    nC = i[1394],
    eC = i[45] + i[1395],
    sC = i[45] + i[14] + i[1396],
    hC = i[45] + i[211] + i[1397],
    rC = i[45] + i[61] + i[1398],
    aC = i[45] + i[85] + i[1399],
    oC = i[45] + i[1] + i[1400],
    fC = i[45] + i[203] + i[1401],
    cC = i[1] + i[1402],
    uC = i[138] + i[237] + i[315],
    _C = i[95] + i[440] + i[315],
    lC = i[85] + i[1403],
    dC = i[24] + i[452],
    vC = i[488] + i[516],
    bC = i[95] + i[1064] + i[28] + i[29],
    yC = i[28] + i[221],
    gC = i[488] + i[822] + i[203] + i[204],
    EC = i[28] + i[868] + i[51] + i[869],
    xC = i[115] + i[66] + i[206],
    mC = i[1404],
    pC = i[115] + i[66] + i[405] + i[66] + i[405] + i[66] + i[318],
    MC = i[197] + i[804] + i[477] + i[107] + i[1405] + i[42] + i[1] + i[1406] + i[42] + i[104] + i[42] + i[805] + i[275] + i[239] + i[1] + i[806],
    wC = i[1407],
    TC = i[335] + i[1157],
    OC = i[726] + i[239] + i[275] + i[239] + i[1408];

  function AC(t, i, n) {
    if (t[p]()) {
      var e = t._gX || t[r]();
      if (e) {
        for (var s = 0, h = (e = e._kH || e)[N]; s < h; s++)
          if (!1 === i[m](n, e[s]) || !1 === AC(e[s], i, n)) return !1;
        return !0
      }
    }
  }

  function SC(t) {
    if (!t[p]()) return t instanceof UG ? t : null;
    for (var i, n = t._gX._kH, e = n[N] - 1; 0 <= e;) {
      if (i = SC(i = n[e])) return i;
      e--
    }
    return null
  }

  function DC(t, i, n, e) {
    return e ? function t(i, n, e) {
      for (var s, h = 0, r = (i = i._kH || i)[N]; h < r; h++)
        if ((s = i[h]).hasChildren() && !t(s[y], n, e) || !1 === n[m](e, s)) return !1;
      return !0
    }(t, i, n) : function t(i, n, e) {
      for (var s, h = 0, r = (i = i._kH || i).length; h < r; h++)
        if (s = i[h], !1 === n[m](e, s) || s[p]() && !t(s[y], n, e)) return !1;
      return !0
    }(t, i, n)
  }

  function IC(t, i, n, e) {
    return e ? function t(i, n, e) {
      for (var s, h = (i = i._kH || i).length - 1; 0 <= h; h--)
        if ((s = i[h])[p]() && !t(s[y], n, e) || !1 === n.call(e, s)) return !1;
      return !0
    }(t, i, n) : function t(i, n, e) {
      for (var s, h = (i = i._kH || i)[N] - 1; 0 <= h; h--)
        if (s = i[h], !1 === n[m](e, s) || s.hasChildren() && !t(s[y], n, e)) return !1;
      return !0
    }(t, i, n)
  }

  function LC(t, i, n) {
    for (var e, s = (t._kH || t)[L](0); s.length;) {
      if (e = s[0], s = s[M](1), !1 === i[m](n, e)) return !1;
      if (e[p]()) {
        var h = e.children;
        h = h._kH || h, s = s[B](h)
      }
    }
    return !0
  }

  function RC(t, f) {
    function e(t, i) {
      for (var n = t[N], e = i.length, s = n + e, h = new Array(s), r = 0, a = 0, o = 0; o < s;) r === n ? h[o++] = i[a++] : a === e || f(t[r], i[a]) <= 0 ? h[o++] = t[r++] : h[o++] = i[a++];
      return h
    }

    function s(t) {
      var i = t.length,
        n = Math[c](i / 2);
      return i <= 1 ? t : e(s(t[L](0, n)), s(t[L](n)))
    }
    return s(t)
  }

  function PC(t, i, n, e) {
    t instanceof LN && (t = t._kH);
    for (var s = 0, h = (t._kH || t)[N]; s < h; s++)
      if (!1 === i[m](n, t[s], s, e)) return !1;
    return !0
  }

  function kC(t, i, n) {
    for (var e = t instanceof LN, s = t._kH || t, h = 0, r = s[N]; h < r; h++) {
      var a = s[h];
      i[m](n, a) && (e ? t.remove(a) : t[M](h, 1), h--, r--)
    }
  }

  function CC(t, i, n, e) {
    t instanceof LN && (t = t._kH);
    for (var s = (t._kH || t)[N] - 1; 0 <= s; s--)
      if (!1 === i.call(n, t[s], s, e)) return !1;
    return !0
  }

  function NC(t) {
    if (t[l] instanceof Function) return t[l](!0);
    var i, n = [];
    return PC(t, function (t) {
      i = t && t[l] instanceof Function ? t.clone() : t, n[D](i)
    }, this), n
  }

  function BC(t, i, n) {
    n === I || n < 0 ? t[D](i) : t[M](n, 0, i)
  }

  function FC(t, i) {
    var n = t[b](i);
    return !(n < 0 || n >= t[N]) && t[M](n, 1)
  }

  function $C(t, i) {
    var n = t;
    for (var e in i)
      if (i.__lookupGetter__) {
        var s = i.__lookupGetter__(e),
          h = i.__lookupSetter__(e);
        s || h ? (s && n.__defineGetter__(e, s), h && n.__defineSetter__(e, h)) : n[e] = i[e]
      } else n[e] = i[e];
    return n
  }

  function GC(t, i, n) {
    if (!(t instanceof Function)) throw new Error("subclass must be type of Function");
    var e = null;

    function s() {}
    a == typeof i && (e = i, i = t, t = function () {
      i.apply(this, arguments)
    });
    var h = t.prototype;
    return s[_] = i[_], t[_] = new s, t[o] = i[_], t.superclass.constructor = i, $C(t[_], h), e && $C(t.prototype, e), n && $C(t[_], n), t[_][f] = t
  }

  function HC(t, i, n) {
    return XC(t, i, "constructor", n)
  }

  function XC(t, i, n, e) {
    var s = i[o];
    if (s) {
      var h = s[n];
      return h ? h[d](t, e) : void 0
    }
  }

  function WC(t, i, n, e) {
    if ("constructor" == n) return UC(t, i, e);
    if (i.super_ instanceof Function) {
      var s = i.super_[_][n];
      return s instanceof Function ? s[d](t, e) : void 0
    }
  }

  function UC(t, i, n) {
    if (i[v] instanceof Function) return i[v][d](t, n)
  }

  function YC(t, i, n) {
    var e, s;
    if (!(t instanceof Function) && t instanceof Object) return i = t.super, t.hasOwnProperty("constructor") ? (e = t.constructor, delete t.constructor) : e = i ? function () {
      i[d](this, arguments)
    } : function () {}, YC(e, i, t);
    if (i && !(i instanceof Function) && i instanceof Object) return YC(t, i.super, i);
    if (i && (s = i, t[v] = s, t[_] = Object.create(s[_], {
        super_: {
          value: s,
          enumerable: !1
        },
        constructor: {
          value: t,
          enumerable: !1
        }
      })), n) {
      var h = t.prototype;
      for (var r in n) h[r] = n[r]
    }
    return t
  }

  function jC(t, e, i, n, s) {
    if (n) Object[g](t, e, {
      value: i,
      enumerable: !0
    });
    else {
      var h = {
          configurable: !0,
          enumerable: !0
        },
        r = E + e;
      i !== I && (t[r] = i), h.get = function () {
        return this[r]
      }, h.set = function (t) {
        var i = this[r];
        if (i == t) return !1;
        var n = new iB(this, e, t, i);
        return !!this[w](n) && (this[r] = t, s && s[m](this, t, i), this.onEvent(n), !0)
      }, Object.defineProperty(t, e, h)
    }
  }

  function ZC(t, i) {
    for (var n = 0, e = i.length; n < e; n++) {
      var s = i[n];
      jC(t, s[T] || s, s.defaultValue || s[O], s.readOnly, s.onSetting)
    }
  }
  var QC = 0;
  if (u.navigator) {
    var VC = navigator[n],
      KC = /opera/i [A](VC),
      zC = !KC && /msie/i [A](VC),
      JC = /rv:11.0/i.test(VC),
      qC = /MSIE 10./i.test(VC);
    if (/Edge/i.test(VC), JC && (zC = !0), /msie\s[6,7,8]/i [A](VC)) throw new Error("your browser is not supported");
    var tN = /webkit|khtml/i [A](VC),
      iN = !tN && /gecko/i [A](VC),
      nN = /firefox\//i.test(VC),
      eN = /Chrome\//i [A](VC),
      sN = !eN && /Safari\//i.test(VC),
      hN = /Macintosh;/i [A](VC),
      rN = /(iPad|iPhone|iPod)/g [A](VC),
      aN = /Android/g [A](VC),
      oN = /Windows Phone/g [A](VC),
      fN = (rN || aN || oN) && S in u,
      cN = VC.match(/AppleWebKit\/([0-9\.]*)/);
    if (cN && 1 < cN[N]) parseFloat(cN[1]);
    aN && parseFloat(VC[e](/Android\s([0-9\.]*)/)[1])
  }

  function uN(t, i) {
    return t.className = i, t
  }

  function _N(t, i) {
    if (!t.hasOwnProperty(R)) {
      var n = t[P](f);
      if (!n) return uN(t, i);
      for (var e = n[k](C), s = 0, h = e[N]; s < h; s++)
        if (e[s] == i) return;
      return uN(t, n += C + i)
    }
    t[R].add(i)
  }

  function lN(t, i) {
    if (!t.hasOwnProperty(R)) {
      var n = t[P](f);
      if (!n || !n[b](i)) return;
      for (var e = "", s = n.split(C), h = 0, r = s[N]; h < r; h++) s[h] != i && (e += s[h] + C);
      return uN(t, e)
    }
    t.classList.remove(i)
  }

  function dN(t) {
    return !isNaN(t) && t instanceof Number || F == typeof t
  }

  function vN(t) {
    return t !== I && (t instanceof String || s == typeof t)
  }

  function bN(t) {
    return Array[$](t)
  }

  function yN(t) {
    (t = t || u[h]).preventDefault ? t.preventDefault() : t.returnValue = !1
  }

  function gN(t) {
    (t = t || u.event)[G] ? t[G](): t[H] || (t[H] = !0)
  }

  function EN(t) {
    yN(t), gN(t)
  }

  function xN(t) {
    return Math[X](Math[W]() * t)
  }

  function mN(t) {
    return 0 < t ? Math[X](t) : Math.ceil(t)
  }

  function pN(t) {
    return 0 < t ? Math[c](t) : Math[X](t)
  }

  function MN(t) {
    return t < 16777216 ? U + (Y + t.toString(16)).slice(-6) : j + (t >> 16 & 255) + Z + (t >> 8 & 255) + Z + (255 & t) + Z + ((t >> 24 & 255) / 255)[Q](2) + V
  }

  function wN(t, i, n) {
    a != typeof n || n.hasOwnProperty(K) || (n[K] = !0), Object.defineProperty(t, i, n)
  }

  function TN(t, i) {
    for (var n in i)
      if (z != n[0]) {
        var e = i[n];
        a != typeof e || e.hasOwnProperty(K) || (e[K] = !0)
      } Object[J](t, i)
  }

  function ON(t, i) {
    i = i || u;
    for (var n = t[k](q), e = 0, s = n.length; e < s; e++) i = i[n[e]];
    return i
  }

  function AN(t) {
    return t instanceof MouseEvent || t instanceof Object && t[tt] !== I
  }

  function SN(t) {
    u[it] && console.log[d](console, arguments)
  }

  function DN(t) {
    u.console && console.error(t)
  }
  u[nt] || (u[nt] = u[et] || u[st] || u[ht] || u.msRequestAnimationFrame || function (t, i) {
    return u[rt](function () {
      t()
    }, 1e3 / 60)
  }), u[at] || (u.cancelAnimationFrame = u[ot] || u.mozCancelAnimationFrame || u.oCancelAnimationFrame || u[ft] || function (t) {
    return u[ct](t)
  });
  var IN = {
    SELECTION_TOLERANCE: fN ? 7 : 4,
    LABEL_COLOR: ut
  };
  TN(IN, {
    FONT_STYLE: {
      get: function () {
        return this[_t] || (this[_t] = lt)
      },
      set: function (t) {
        this._fontStyle != t && (this[_t] = t, this[dt] = !0)
      }
    },
    FONT_SIZE: {
      get: function () {
        return this._fontSize || (this[vt] = 12)
      },
      set: function (t) {
        this[vt] != t && (this._fontSize = t, this[dt] = !0)
      }
    },
    FONT_FAMILY: {
      get: function () {
        return this[bt] || (this._fontFamily = "Verdana,helvetica,arial,sans-serif")
      },
      set: function (t) {
        this._fontFamily != t && (this._fontFamily = t, this._fontChanged = !0)
      }
    },
    FONT: {
      get: function () {
        return !this[dt] && this[dt] !== I || (this[dt] = !1, this[yt] = this[gt] + C + this.FONT_SIZE + Et + this.FONT_FAMILY), this[yt]
      }
    }
  });
  var LN = function (t) {
    this._kH = [], this._mS = {}, t && this.add(t)
  };
  LN[_] = {
    _kH: null,
    _mS: null,
    get: function (t) {
      return this[xt](t)
    },
    getById: function (t) {
      return this._mS[t]
    },
    getByIndex: function (t) {
      return this._kH[t]
    },
    forEach: function (t, i, n) {
      return PC(this._kH, t, i, n)
    },
    forEachReverse: function (t, i, n) {
      return CC(this._kH, t, i, n)
    },
    size: function () {
      return this._kH[N]
    },
    contains: function (t) {
      return this[mt](t.id)
    },
    containsById: function (t) {
      return this._mS.hasOwnProperty(t)
    },
    setIndex: function (t, i) {
      var n = this._kH.indexOf(t);
      if (n < 0) throw new Error(pt + t.id + Mt);
      return n != i && (this._kH.splice(n, 1), this._kH[M](i, 0, t), !0)
    },
    setIndexAfter: function (t, i) {
      var n = this._kH[b](t);
      if (n < 0) throw new Error(pt + t.id + Mt);
      return n == i ? i : n == i + 1 ? i + 1 : (i < n && (i += 1), this._kH.splice(n, 1), this._kH[M](i, 0, t), i)
    },
    setIndexBefore: function (t, i) {
      var n = this._kH.indexOf(t);
      if (n < 0) throw new Error(pt + t.id + Mt);
      return n == i ? i : n == i - 1 ? i - 1 : (n < i && --i, this._kH[M](n, 1), this._kH.splice(i, 0, t), i)
    },
    indexOf: function (t) {
      return this._kH[b](t)
    },
    getIndexById: function (t) {
      var i = this[wt](t);
      return i ? this._kH[b](i) : -1
    },
    add: function (t, i) {
      return bN(t) ? this._gV(t, i) : this._lV(t, i)
    },
    addFirst: function (t) {
      return this.add(t, 0)
    },
    _gV: function (t, i) {
      if (0 == t[N]) return !1;
      for (var n = !1, e = 0 <= i, s = 0, h = (t = t._kH || t)[N]; s < h; s++) {
        var r = t[s];
        null !== r && r !== I && this._lV(r, i, !0) && (n = !0, e && i++)
      }
      return n
    },
    _lV: function (t, i, n) {
      var e = t.id;
      return e !== I && !this.containsById(e) && (BC(this._kH, t, i), this._mS[e] = t)
    },
    remove: function (t) {
      return bN(t) ? this._oAC(t) : t.id ? this._gQ(t.id, t) : this.removeById(t)
    },
    _oAC: function (t) {
      if (0 == t[N]) return !1;
      for (var i = !1, n = 0, e = (t = t._kH || t)[N]; n < e; n++) {
        var s = t[n];
        if (null !== s && s !== I) {
          s.id === I && (s = this._mS[s]);
          var h = s.id;
          this._gQ(h, s, !0) && (i = !0)
        }
      }
      return i
    },
    _gQ: function (t, i, n) {
      return !(t === I || !this[mt](t) || (null !== i && i !== I || (i = this[wt](t)), delete this._mS[t], FC(this._kH, i), 0))
    },
    removeById: function (t) {
      var i = this._mS[t];
      return !!i && this._gQ(t, i)
    },
    set: function (t) {
      if (!t || 0 == t) return this.clear();
      if (this[Tt]() || !bN(t)) return this[Ot](), this.add(t);
      var i = [],
        n = {},
        e = 0;
      if (PC(t, function (t) {
          this._mS[t.id] ? (n[t.id] = t, e++) : i[D](t)
        }, this), e != this.length) {
        var s = [];
        this[At](function (t) {
          n[t.id] || s[D](t)
        }, this), s[N] && this[St](s)
      }
      return i.length && this._gV(i), !0
    },
    clear: function () {
      return !this[Tt]() && (this._kH[N] = 0, this._mS = {}, !0)
    },
    toDatas: function () {
      return this._kH[L](0)
    },
    isEmpty: function () {
      return 0 == this._kH[N]
    },
    valueOf: function () {
      return this._kH.length
    },
    clone: function (t) {
      var i = new LN;
      return t ? i.add(NC(this._kH)) : i.add(this[Dt]()), i
    }
  }, TN(LN[_], {
    datas: {
      get: function () {
        return this._kH
      }
    },
    random: {
      get: function () {
        return this._kH && this._kH[N] ? this._kH[xN(this._kH[N])] : null
      }
    },
    length: {
      get: function () {
        return this._kH ? this._kH[N] : 0
      }
    }
  });

  function RN(t, i, n, e) {
    var s = t - n,
      h = i - e;
    return Math[Lt](s * s + h * h)
  }
  var PN = 2 * Math.PI,
    kN = .5 * Math.PI,
    CN = function (t, i, n) {
      t instanceof CN && (i = t.y, n = (t = t.x)[It]), this.set(t, i, n)
    };
  CN[_] = {
    x: 0,
    y: 0,
    rotate: I,
    set: function (t, i, n) {
      this.x = t || 0, this.y = i || 0, this.rotate = n || 0
    },
    negate: function () {
      this.x = -this.x, this.y = -this.y
    },
    offset: function (t, i) {
      this.x += t, this.y += i
    },
    equals: function (t) {
      return this.x == t.x && this.y == t.y
    },
    distanceTo: function (t) {
      return RN(this.x, this.y, t.x, t.y)
    },
    toString: function () {
      return Rt + this.x + Pt + this.y + V
    },
    clone: function () {
      return new CN(this.x, this.y)
    }
  }, Object.defineProperty(CN.prototype, kt, {
    get: function () {
      return Math[Lt](this.x * this.x + this.y * this.y)
    }
  });

  function NN(t, i, n, e) {
    t !== I && this._nX(t, i, n, e)
  }

  function BN(t, i, n) {
    var e, s, h;
    0 == t._o8 ? (e = -1, h = 0, s = i) : 0 == t._oB ? (e = 0, h = 1, s = n) : (e = -1 / t._o8, s = (t._o8 - e) * i + t._oA, h = 1);
    var r = new NN;
    return r._o8 = e, r._oA = s, r._oB = h, r._o2 = i, r._o4 = n, r._mK = Math[Ct](e, h), r[Nt] = Math.cos(r._mK), r[Bt] = Math.sin(r._mK), r
  }

  function FN(t, i, n, e, s) {
    var h, r, a, o;
    if (e < i ? h = -1 : i < e && (h = 1), s < n ? r = -1 : n < s && (r = 1), !h) return {
      x: i,
      y: o = r < 0 ? t.y : t[Ft]
    };
    if (!r) return {
      x: a = h < 0 ? t.x : t[$t],
      y: n
    };
    var f = (n - s) / (i - e),
      c = n - f * i,
      u = h < 0 ? i - t.x : i - t.right,
      _ = r < 0 ? n - t.y : n - t.bottom;
    return Math.abs(f) >= Math.abs(_ / u) ? a = ((o = r < 0 ? t.y : t.bottom) - c) / f : o = f * (a = h < 0 ? t.x : t.right) + c, {
      x: a,
      y: o
    }
  }

  function $N(t, i) {
    this[Ht] = t, this.height = i
  }

  function GN(t, i, n, e, s, h, r, a) {
    return !(r <= 0 || a <= 0 || n <= 0 || e <= 0) && (a += h, n += t, e += i, ((r += s) < s || t < r) && (a < h || i < a) && (n < t || s < n) && (e < i || h < e))
  }

  function HN(t, i, n, e, s, h) {
    return t <= s && s <= t + n && i <= h && h <= i + e
  }

  function XN(t, i, n, e, s, h, r, a, o) {
    return o && (t -= o, i -= o, n += o + o, e += o + o), t <= s && i <= h && s + r <= t + n && h + a <= i + e
  }
  NN[_] = {
    _o2: null,
    _o4: null,
    _o5: null,
    _o6: null,
    _o8: null,
    _oA: null,
    _oB: 1,
    _nX: function (t, i, n, e) {
      this._o2 = t, this._o4 = i, this._o5 = n, this._o6 = e, t == n ? (this._o8 = -1, this._oB = 0, this._oA = t) : (this._o8 = (i - e) / (t - n), this._oA = i - this._o8 * t, this._oB = 1), this._mK = Math.atan2(this._o6 - this._o4, this._o5 - this._o2), this[Nt] = Math.cos(this._mK), this[Bt] = Math.sin(this._mK)
    },
    _dC: function (t) {
      return 0 == this._oB ? Number.NaN : this._o8 * t + this._oA
    },
    _dD: function (t) {
      return 0 == this._o8 ? Number.NaN : (t - this._oA) / this._o8
    },
    _$e: function (t) {
      var i, n, e, s, h, r, a, o = t[0],
        f = t[2],
        c = t[4],
        u = t[1],
        _ = t[3],
        l = t[5],
        d = this._o8,
        v = this._oA;
      if (0 != (h = 0 == this._oB ? (e = Math[Lt]((-d * d * o - d * v) * c + d * d * f * f + 2 * d * v * f - d * v * o), s = -d * f + d * o, d * c - 2 * d * f + d * o) : (e = Math[Lt]((d * o - u + v) * l + _ * _ + (-2 * d * f - 2 * v) * _ + (d * c + v) * u + (-d * d * o - d * v) * c + d * d * f * f + 2 * d * v * f - d * v * o), s = -_ + u + d * f - d * o, l - 2 * _ + u - d * c + 2 * d * f - d * o))) return n = (-e + s) / h, 0 <= (i = (e + s) / h) && i <= 1 && (r = _F(i, t)), 0 <= n && n <= 1 && (a = _F(n, t)), r && a ? [r, a] : r || a || void 0
    },
    _3N: function (t, i, n) {
      if (this._o8 == t._o8 || 0 == this._oB && 0 == t._oB) return null;
      var e, s, h, r, a;
      if (e = 0 == this._oB ? this._oA : 0 == t._oB ? t._oA : (t._oA - this._oA) / (this._o8 - t._o8), s = 0 == this._o8 ? this._oA : 0 == t._o8 ? t._oA : this._oB ? this._o8 * e + this._oA : t._o8 * e + t._oA, !i) return {
        x: e,
        y: s
      };
      if (n) r = -(h = -i / 2);
      else {
        var o = -(h = -RN(this._o2, this._o4, e, s)) + (r = RN(this._o5, this._o6, e, s));
        if (i < o) {
          var f = i / o;
          h *= f, r *= f
        } else a = (i - o) / 2
      }
      var c = this._7C(e, s, h),
        u = this._7C(e, s, r);
      return a && (c._rest = a, u[Gt] = a), [c, u]
    },
    _7C: function (t, i, n) {
      return 0 == this._oB ? {
        x: t,
        y: i + n
      } : {
        x: t + n * this[Nt],
        y: i + n * this[Bt]
      }
    }
  }, $N[_] = {
    width: 0,
    height: 0,
    isEmpty: function () {
      return this.width <= 0 || this[Xt] <= 0
    },
    clone: function () {
      return new $N(this.width, this[Xt])
    },
    toString: function () {
      return Wt + this[Ht] + Pt + this[Xt] + V
    }
  };
  var WN = function (t, i, n, e) {
    t instanceof Object && !dN(t) && (i = t.y, n = t[Ht], e = t[Xt], t = t.x), n === I && (n = -1), e === I && (e = -1), this.x = t || 0, this.y = i || 0, this[Ht] = n, this.height = e
  };

  function UN(t, i, n, e) {
    1 == arguments[N] ? i = n = e = t : 2 == arguments.length && (n = t, e = i), this.set(t, i, n, e)
  }
  WN[_] = {
    x: 0,
    y: 0,
    width: -1,
    height: -1,
    setByRect: function (t) {
      this.x = t.x || 0, this.y = t.y || 0, this.width = t.width || 0, this.height = t[Xt] || 0
    },
    set: function (t, i, n, e) {
      this.x = t || 0, this.y = i || 0, this.width = n || 0, this.height = e || 0
    },
    offset: function (t, i) {
      return this.x += t, this.y += i, this
    },
    contains: function (t, i, n, e) {
      if (1 != arguments.length) return 2 == arguments[N] ? t >= this.x && t <= this.x + this[Ht] && i >= this.y && i <= this.y + this[Xt] : XN(this.x, this.y, this.width, this[Xt], t, i, n || 0, e || 0);
      if (a == typeof t && Ut in t && Yt in t) return this[jt](t.x, t.y, t[Ht], t[Xt]);
      throw {
        message: Zt
      }
    },
    intersectsPoint: function (t, i, n) {
      return !(this[Ht] <= 0 && this[Xt] <= 0) && (n ? this[Qt](t - n, i - n, 2 * n, 2 * n) : t >= this.x && t <= this.x + this[Ht] && i >= this.y && i <= this.y + this[Xt])
    },
    intersectsRect: function (t, i, n, e) {
      return GN(this.x, this.y, this[Ht], this.height, t, i, n, e)
    },
    intersects: function (t, i) {
      return dN(t[Ht]) ? this.intersectsRect(t.x, t.y, t.width, t.height) : this[Vt](t, i)
    },
    intersection: function (t, i, n, e) {
      var s = this.x,
        h = this.y,
        r = s,
        a = h,
        o = t,
        f = i;
      return s < t && (s = t), h < i && (h = i), (o += n) < (r += this.width) && (r = o), (f += e) < (a += this[Xt]) && (a = f), a -= h, (r -= s) < 0 || a < 0 ? null : new WN(s, h, r, a)
    },
    addPoint: function (t) {
      this.add(t.x, t.y)
    },
    add: function (t, i) {
      if (dN(t[Ht])) return this[Kt](t.x, t.y, t[Ht], t[Xt]);
      if (dN(t.x) && (i = t.y, t = t.x), this[Ht] < 0 || this[Xt] < 0) return this.x = t, this.y = i, void(this[Ht] = this[Xt] = 0);
      var n = this.x,
        e = this.y,
        s = this.width,
        h = this[Xt];
      s += n, h += e, t < n && (n = t), i < e && (e = i), s < t && (s = t), h < i && (h = i), h -= e, (s -= n) > Number[zt] && (s = Number.MAX_VALUE), h > Number[zt] && (h = Number.MAX_VALUE), this.set(n, e, s, h)
    },
    addRect: function (t, i, n, e) {
      var s = this[Ht],
        h = this.height;
      (s < 0 || h < 0) && this.set(t, i, n, e);
      var r = n,
        a = e;
      if (!(r < 0 || a < 0)) {
        var o = this.x,
          f = this.y;
        s += o, h += f, t < o && (o = t), i < f && (f = i), s < (r += t) && (s = r), h < (a += i) && (h = a), h -= f, (s -= o) > Number[zt] && (s = Number.MAX_VALUE), h > Number.MAX_VALUE && (h = Number.MAX_VALUE), this.set(o, f, s, h)
      }
    },
    shrink: function (t, i, n, e) {
      return dN(t) ? e = 1 == arguments[N] ? i = n = t || 0 : 2 == arguments[N] ? (n = t || 0, i || 0) : (t = t || 0, i = i || 0, n = n || 0, e || 0) : (i = t[Jt] || 0, n = t.bottom || 0, e = t[$t] || 0, t = t.top || 0), this.x += i, this.y += t, this.width -= i + e, this[Xt] -= t + n, this
    },
    grow: function (t, i, n, e) {
      return dN(t) ? e = 1 == arguments[N] ? i = n = t || 0 : 2 == arguments[N] ? (n = t || 0, i || 0) : (t = t || 0, i = i || 0, n = n || 0, e || 0) : (i = t.left || 0, n = t[Ft] || 0, e = t[$t] || 0, t = t.top || 0), this.x -= i, this.y -= t, this[Ht] += i + e, this[Xt] += t + n, this
    },
    scale: function (t) {
      return this.x *= t, this.y *= t, this[Ht] *= t, this.height *= t, this
    },
    isEmpty: function () {
      return this.width <= 0 && this[Xt] <= 0
    },
    toString: function () {
      return this.x + qt + this.y + qt + this[Ht] + qt + this[Xt]
    },
    union: function (t) {
      var i = this.width,
        n = this.height;
      if (i < 0 || n < 0) return new WN(t.x, t.y, t[Ht], t[Xt]);
      var e = t[Ht],
        s = t[Xt];
      if (e < 0 || s < 0) return new WN(this.x, this.y, this[Ht], this[Xt]);
      var h = this.x,
        r = this.y;
      i += h, n += r;
      var a = t.x,
        o = t.y;
      return a < h && (h = a), o < r && (r = o), i < (e += a) && (i = e), n < (s += o) && (n = s), n -= r, (i -= h) > Number[zt] && (i = Number.MAX_VALUE), n > Number.MAX_VALUE && (n = Number.MAX_VALUE), new WN(h, r, i, n)
    },
    clear: function () {
      this.set(0, 0, -1, -1)
    },
    equals: function (t) {
      return t && this.x == t.x && this.y == t.y && this[Ht] == t[Ht] && this[Xt] == t[Xt]
    },
    clone: function (t, i) {
      return new WN(this.x + (t || 0), this.y + (i || 0), this.width, this[Xt])
    },
    toArray: function () {
      return [this.x, this.y, this.width, this[Xt]]
    },
    getIntersectionPoint: function (t, i, n, e) {
      return FN(this, t, i, n, e)
    }
  }, GC(WN, $N), WN[ti] = function (t, i) {
    return t == i || t && i && t.x == i.x && t.y == i.y && t[Ht] == i.width && t[Xt] == i[Xt]
  }, TN(WN[_], {
    left: {
      get: function () {
        return this.x
      }
    },
    top: {
      get: function () {
        return this.y
      }
    },
    bottom: {
      get: function () {
        return this.y + this[Xt]
      }
    },
    right: {
      get: function () {
        return this.x + this[Ht]
      }
    },
    cx: {
      get: function () {
        return this.x + this[Ht] / 2
      }
    },
    cy: {
      get: function () {
        return this.y + this[Xt] / 2
      }
    },
    center: {
      get: function () {
        return new CN(this.cx, this.cy)
      }
    }
  }), WN.intersects = GN, WN.intersection = function (t, i, n, e, s, h, r, a) {
    var o = t,
      f = i,
      c = s,
      u = h;
    return t < s && (t = s), i < h && (i = h), (c += r) < (o += n) && (o = c), (u += a) < (f += e) && (f = u), f -= i, (o -= t) < 0 || f < 0 ? null : new WN(t, i, o, f)
  }, WN[Vt] = HN, UN[_] = {
    top: 0,
    bottom: 0,
    left: 0,
    right: 0,
    set: function (t, i, n, e) {
      this.top = t || 0, this[Jt] = i || 0, this.bottom = n || 0, this.right = e || 0
    },
    clone: function () {
      return new UN(this.top, this.left, this[Ft], this[$t])
    },
    equals: function (t) {
      return t && this.top == t.top && this[Ft] == t[Ft] && this[Jt] == t[Jt] && this[$t] == t[$t]
    }
  };
  var YN = function (t, i) {
    this[ii] = t, this.verticalPosition = i
  };
  YN[_] = {
    verticalPosition: !1,
    horizontalPosition: !1,
    toString: function () {
      return (this[ii] || "") + (this[ni] || "")
    }
  }, wN(YN.prototype, ei, {
    get: function () {
      return (this.horizontalPosition || "") + (this[ni] || "")
    }
  });
  var jN = si,
    ZN = hi,
    QN = ri,
    VN = ai;
  YN.LEFT_TOP = new YN(jN, QN), YN[oi] = new YN(jN, fi), YN.LEFT_BOTTOM = new YN(jN, VN), YN[ci] = new YN(ui, QN), YN[_i] = new YN(ui, fi), YN[li] = new YN(ui, VN), YN[di] = new YN(ZN, QN), YN[vi] = new YN(ZN, fi), YN.RIGHT_BOTTOM = new YN(ZN, VN);
  var KN = [YN.LEFT_TOP, YN[oi], YN[bi], YN[ci], YN[_i], YN[li], YN[di], YN.RIGHT_MIDDLE, YN[yi]];

  function zN(t, i) {
    var n = JN(t, i[Ht], i[Xt]);
    return n.x += i.x || 0, n.y += i.y || 0, n
  }

  function JN(t, i, n) {
    if (!t) return {
      x: 0,
      y: 0
    };
    if (vN(t) && (t = YN[gi](t)), t instanceof YN) {
      var e, s, h = t.horizontalPosition,
        r = t[ni];
      switch (h) {
        case jN:
          e = 0;
          break;
        case ZN:
          e = i;
          break;
        default:
          e = i / 2
      }
      switch (r) {
        case QN:
          s = 0;
          break;
        case VN:
          s = n;
          break;
        default:
          s = n / 2
      }
      return {
        x: e,
        y: s
      }
    }
    if (t.x !== I) return t[Ei] ? {
      x: t.x * i,
      y: t.y * n
    } : {
      x: t.x,
      y: t.y
    };
    throw new Error("Position not be supported - " + t)
  }

  function qN(t, i, n, e, s) {
    this.set(t, i, n, e), this[xi] = s
  }

  function tB(t, i, n, e) {
    this[pi] = t, this[Mi] = i, this[wi] = n, this.value = e
  }
  wN(YN, W, {
    get: function () {
      return KN[xN(KN[N])]
    }
  }), YN[gi] = function (t) {
    for (var i in YN) {
      var n = YN[i];
      if (n && W != i && n instanceof YN && n.toString() == t) return n
    }
    throw new Error("Position not be supported - " + t)
  }, qN[_] = {
    radius: 0,
    classify: function (t, i, n, e) {
      return t < i ? 0 : t < i + e ? 1 : t < n - e ? 2 : t < n ? 3 : 4
    },
    intersectsRect: function (t, i, n, e) {
      if (!1 === XC(this, qN, Qt, arguments)) return !1;
      var s = this.x,
        h = this.y,
        r = s + this[Ht],
        a = h + this[Xt],
        o = 2 * radius,
        f = 2 * radius,
        c = Math.min(this[Ht], Math.abs(o)) / 2,
        u = Math.min(this[Xt], Math.abs(f)) / 2,
        _ = this.classify(t, s, r, c),
        l = this[mi](t + n, s, r, c),
        d = this.classify(i, h, a, u),
        v = this[mi](i + e, h, a, u);
      return 2 == _ || 2 == l || 2 == d || 2 == v || _ < 2 && 2 < l || d < 2 && 2 < v || (t = 1 == l ? t = t + n - (s + c) : t -= r - c, i = 1 == v ? i = i + e - (h + u) : i -= a - u, (t /= c) * t + (i /= u) * i <= 1)
    },
    intersectsPoint: function (t, i) {
      if (!1 === XC(this, qN, Vt, arguments)) return !1;
      var n = this.x,
        e = this.y,
        s = n + this[Ht],
        h = e + this[Xt];
      if (t < n || i < e || s <= t || h <= i) return !1;
      var r = 2 * radius,
        a = 2 * radius,
        o = Math.min(this[Ht], Math.abs(r)) / 2,
        f = Math.min(this.height, Math.abs(a)) / 2;
      return t >= (n += o) && t < (n = s - o) || i >= (e += f) && i < (e = h - f) || (t = (t - n) / o) * t + (i = (i - e) / f) * i <= 1
    },
    clone: function () {
      return new qN(this.x, this.y, this[Ht], this[Xt], this[xi])
    }
  }, GC(qN, WN), tB[_] = {
    source: null,
    type: null,
    kind: null,
    value: null,
    toString: function () {
      return Ti + this.source + Oi + this.type + Ai + this.kind
    }
  };
  var iB = function (t, i, n, e, s) {
    this[pi] = t, this[wi] = i, this[Si] = e, this[O] = n, this[Di] = s
  };

  function nB(t, i, n) {
    this[pi] = t, this[Si] = t[Ci], this[O] = i, this[Ni] = n, this[Si] && (this[Bi] = this[Si][Fi](t))
  }

  function eB(t, i) {
    this[pi] = t, this[O] = i
  }

  function sB(t, i) {
    this.source = t, this.value = i
  }

  function hB(t, i, n, e) {
    this[pi] = i, this.oldValue = n, this.value = e, this.parent = t, this.child = i, this.oldIndex = n, this[Ni] = e
  }

  function rB() {}

  function aB(t, i) {
    this.listener = t, this.scope = i, t instanceof Function ? this[Wi] = t : (this.onEvent = t[Wi], this.beforeEvent = t.beforeEvent), this.equals = function (t) {
      return t && this[Xi] == t.listener && this[Ui] == t.scope
    }
  }
  iB[_] = {
    type: Ii,
    propertyType: null,
    toString: function () {
      return Ti + this[pi] + Oi + this.type + Li + this[wi] + Ri + this.oldValue + Pi + this[O]
    }
  }, GC(iB, tB), wN(iB[_], ki, {
    get: function () {
      return this[wi]
    },
    set: function (t) {
      this.kind = t
    }
  }), nB[_] = {
    kind: Ci
  }, GC(nB, iB), eB[_][wi] = $i, GC(eB, iB), sB.prototype[wi] = Gi, GC(sB, iB), hB[_][wi] = Hi, GC(hB, iB), rB[_] = {
    listener: null,
    beforeEvent: function (t) {
      return null == this.listener || !this.listener[w] || this[Xi][w](t)
    },
    onEvent: function (t) {
      null != this[Xi] && this.listener[Wi] && this[Xi][Wi](t)
    }
  };
  var oB = function () {
    HC(this, oB, arguments), this.events = {}, this.listeners = []
  };

  function fB(t, i, n, e, s) {
    this[pi] = t, this.type = Vi, this[wi] = i, this.data = n, this[Ki] = e, this[Bi] = s
  }

  function cB() {
    this.id = ++QC, this[rn] = {}
  }

  function uB() {
    this._kH = [], this._mS = {}, this._1I = new oB
  }
  aB[_] = {
    equals: function (t) {
      return t && this[Xi] == t[Xi] && this[Ui] == t[Ui]
    },
    destroy: function () {
      delete this.scope, delete this[Xi]
    }
  }, oB[_] = {
    listeners: null,
    _oAT: function () {
      return this[Yi] && 0 < this.listeners[N]
    },
    _7E: function (t, i) {
      return t instanceof oB ? t : new aB(t, i)
    },
    _o89: function (t, i) {
      if (t instanceof oB) return this[Yi].indexOf(t);
      for (var n = this.listeners, e = 0, s = n.length; e < s; e++) {
        var h = n[e];
        if (h.listener == t && h[Ui] == i) return e
      }
      return -1
    },
    contains: function (t, i) {
      return 0 <= this[ji](t, i)
    },
    addListener: function (t, i) {
      if (this[jt](t, i)) return !1;
      this[Yi][D](this._7E(t, i))
    },
    removeListener: function (t, i, n) {
      var e = this._o89(t, i);
      0 <= e && this[Yi][M](e, 1)
    },
    on: function (t, i) {
      this[Zi](t, i)
    },
    un: function (t, i, n) {
      this[Qi](t, i, n)
    },
    onEvent: function (i) {
      if (!this[Yi]) return !1;
      PC(this.listeners, function (t) {
        t[Wi] && (t.scope ? t[Wi].call(t.scope, i) : t[Wi](i))
      }, this)
    },
    beforeEvent: function (i) {
      return !this[Yi] || PC(this[Yi], function (t) {
        return !t[w] || (t.scope ? t[w].call(t[Ui], i) : t.beforeEvent(i))
      }, this)
    },
    _eG: function (t) {
      return !1 !== this[w](t) && (this[Wi](t), !0)
    },
    clear: function () {
      this[Yi] = []
    },
    destroy: function () {
      this.clear()
    }
  }, GC(oB, rB), fB[_] = {
    index: -1,
    oldIndex: -1,
    toString: function () {
      return Ti + this[pi] + Oi + this[Mi] + Ai + this[wi] + zi + this.data + Ji + this[Ki] + qi + this[Bi]
    }
  }, GC(fB, tB), fB.KIND_ADD = tn, fB[nn] = en, fB.KIND_CLEAR = Ot, fB[sn] = hn, cB.prototype = {
    _oBU: null,
    id: null,
    get: function (t) {
      return this._oBU[t]
    },
    set: function (t, i) {
      var n = this.get(t);
      if (n === i) return !1;
      var e = new iB(this, t, i, n);
      return e.propertyType = zB[an], this[on](t, i, e, this[rn])
    },
    _oAA: function (t, i, n, e) {
      return !1 !== this.beforeEvent(n) && (e = e || this[rn], i === I ? delete e[t] : e[t] = i, this.onEvent(n), !0)
    },
    remove: function (t) {
      this.set(t, null)
    },
    valueOf: function () {
      return this.id
    },
    toString: function () {
      return this.id
    },
    _eO: function (t, i) {
      if (i === I && (i = -1), this == t || t == this._kP) return !1;
      if (t && this == t._kP && !t._eO(null)) return !1;
      var n, e, s = new nB(this, t, i);
      if (!this[w](s)) return !1;
      var h, r, a, o, f = this._kP;
      return !(t && (n = new eB(t, this), !t[w](n)) || null != f && (e = new sB(f, this), !f[w](e)) || (null != (this._kP = t) && (r = i, (h = t)[y].add(this, r), h[fn](this, r)), null != f && (o = this, (a = f)._gX && (a._gX[en](o), a[cn](o))), this[Wi](s), null != t && t[Wi](n), null != f && f[Wi](e), this[un](f, t), 0))
    },
    addChild: function (t, i) {
      var n = t._eO(this, i);
      return n && this.onChildAdd(t, i), n
    },
    removeChild: function (t) {
      if (!this._gX || !this._gX[jt](t)) return !1;
      var i = t._eO(null);
      return this[cn](t), i
    },
    toChildren: function () {
      return this._gX ? this._gX[Dt]() : null
    },
    clearChildren: function () {
      if (this._gX && this._gX.length) {
        var t = this[_n]();
        PC(t, function (t) {
          t._eO(null)
        }, this), this[ln](t)
      }
    },
    forEachChild: function (t, i) {
      return !!this.hasChildren() && this._gX.forEach(t, i)
    },
    onChildAdd: function (t, i) {},
    onChildRemove: function (t) {},
    onChildrenClear: function (t) {},
    onParentChanged: function (t, i) {},
    getChildIndex: function (t) {
      return this._gX && this._gX[N] ? this._gX[b](t) : -1
    },
    setChildIndex: function (t, i) {
      if (!this._gX || !this._gX.length) return !1;
      var n = this._gX.indexOf(t);
      if (n < 0 || n == i) return !1;
      var e = new hB(this, t, n, i);
      return !1 !== this[w](e) && (this._gX[en](t) && this._gX.add(t, i), this[Wi](e), !0)
    },
    hasChildren: function () {
      return this._gX && 0 < this._gX[N]
    },
    getChildAt: function (t) {
      return null == this._gX ? null : this._gX._kH[t]
    },
    isDescendantOf: function (t) {
      if (!t.hasChildren()) return !1;
      for (var i = this[Ci]; null != i;) {
        if (t == i) return !0;
        i = i.parent
      }
      return !1
    },
    firePropertyChangeEvent: function (t, i, n, e) {
      this.onEvent(new iB(this, t, i, n, e))
    }
  }, GC(cB, rB), TN(cB[_], {
    childrenCount: {
      get: function () {
        return this._gX ? this._gX[N] : 0
      }
    },
    children: {
      get: function () {
        return this._gX || (this._gX = new LN), this._gX
      }
    },
    parent: {
      get: function () {
        return this._kP
      },
      set: function (t) {
        this._eO(t, -1)
      }
    },
    properties: {
      get: function () {
        return this[rn]
      },
      set: function (t) {
        this._oBU != t && (this[rn] = t)
      }
    }
  }), uB[_] = {
    beforeEvent: function (t) {
      return null == this._1I || !this._1I.beforeEvent || this._1I[w](t)
    },
    onEvent: function (t) {
      this._1I instanceof Function ? this._1I(t) : null != this._1I && this._1I.onEvent && this._1I[Wi](t)
    },
    _1I: null,
    setIndex: function (t, i) {
      if (!this[jt](t)) throw new Error(pt + t[dn]() + Mt);
      var n = this[b](t);
      if (n == i) return !1;
      var e = new fB(this, fB[sn], t, i, n);
      return !1 !== this[w](e) && (this._kH[M](n, 1), this._kH.splice(i, 0, t), this[Wi](e), !0)
    },
    _gV: function (t, i) {
      if (0 == t[N]) return !1;
      var n = !1,
        e = 0 <= i,
        s = new fB(this, fB[vn], t, i);
      if (!1 === this[w](s)) return !1;
      for (var h = [], r = 0, a = (t = t._kH || t)[N]; r < a; r++) {
        var o = t[r];
        null !== o && o !== I && this._lV(o, i, !0) && (h[D](o), n = !0, e && i++)
      }
      return s[bn] = h, this[Wi](s), n
    },
    _lV: function (t, i, n) {
      if (!1 === this[yn](t)) return !1;
      if (n) return XC(this, uB, gn, arguments);
      var e = new fB(this, fB.KIND_ADD, t, i);
      return !1 !== this.beforeEvent(e) && !!XC(this, uB, gn, arguments) && (this._lU(t, e), t)
    },
    _lU: function (t, i) {
      this[Wi](i)
    },
    _oAC: function (t) {
      if (0 == t[N]) return !1;
      var i = new fB(this, fB.KIND_REMOVE, t);
      if (!1 === this[w](i)) return !1;
      for (var n = [], e = !1, s = 0, h = (t = t._kH || t)[N]; s < h; s++) {
        var r = t[s];
        if (null !== r && r !== I) {
          var a = r.id || r;
          r.id === I && (r = null), this._gQ(a, r, !0) && (n[D](r), e = !0)
        }
      }
      return i[bn] = n, this.onEvent(i), e
    },
    _gQ: function (t, i, n) {
      if (n) return XC(this, uB, En, arguments);
      var e = new fB(this, fB.KIND_REMOVE, i);
      return !1 !== this.beforeEvent(e) && !!XC(this, uB, En, arguments) && (this.onEvent(e), !0)
    },
    clear: function () {
      if (this[Tt]()) return !1;
      var t = new fB(this, fB[xn], this[Dt]());
      return !1 !== this[w](t) && !!XC(this, uB, Ot) && (this.onEvent(t), !0)
    },
    accept: function (t) {
      return !this[mn] || !1 !== this.filter(t)
    }
  }, GC(uB, LN), wN(uB.prototype, pn, {
    get: function () {
      return this._1I
    }
  });
  var _B = function () {
    HC(this, _B, arguments), this[Mn] = new oB, this[wn] = new lB(this), this[wn]._1I = this[Mn], this[Tn] = new oB, this[Tn][Zi]({
      beforeEvent: this.beforeDataPropertyChange,
      onEvent: this.onDataPropertyChanged
    }, this), this.parentChangeDispatcher = new oB, this.childIndexChangeDispatcher = new oB, this.$roots = new LN;
    var s = this;
    this[On].setIndex = function (t, i) {
      if (!s[On][jt](t)) throw new Error(pt + t.id + Mt);
      var n = s[On]._kH[b](t);
      if (n == i) return !1;
      s.$roots._kH.splice(n, 1), s[On]._kH[M](i, 0, t), s[An] = !0;
      var e = new hB(s, t, n, i);
      return s._1Z(e), !0
    }
  };
  _B.prototype = {
    selectionModel: null,
    selectionChangeDispatcher: null,
    dataChangeDispatcher: null,
    parentChangeDispatcher: null,
    roots: null,
    _lU: function (t, i) {
      t[Xi] = this.dataChangeDispatcher, t.parent || this[On].add(t), this[Wi](i)
    },
    _gQ: function (t, i) {
      if (XC(this, _B, En, arguments)) {
        if (i instanceof GG) i[Sn]();
        else if (i instanceof UG) {
          var n = i.getEdges();
          this[en](n)
        }
        var e = i.parent;
        return null == e ? this[On].remove(i) : (e.removeChild(i), e[Dn] = !0), i[p]() && this.remove(i[_n]()), !(i.listener = null)
      }
      return !1
    },
    _5Q: function (t) {
      var i = t.source;
      this[jt](i) && (null == i[Ci] ? this.$roots.add(i) : null == t[Si] && this.$roots[en](i), this[In].onEvent(t))
    },
    _1Z: function (t) {
      this.childIndexChangeDispatcher[Wi](t)
    },
    beforeDataPropertyChange: function (t) {
      return !(t instanceof nB) || this[In][w](t)
    },
    onDataPropertyChanged: function (t) {
      if (t instanceof nB) return this[An] = !0, t[pi]._d0IndexFlag = !0, void this._5Q(t);
      t instanceof hB && (this[An] = !0, t.source._d0IndexFlag = !0, this._1Z(t))
    },
    toRoots: function () {
      return this[On].toDatas()
    },
    _gS: function (t) {
      var i, n = t._kP,
        e = (i = n ? n._gX : this.$roots)[b](t);
      if (e < 0) throw new Error(Ln + t + "' not exist in the box");
      return 0 == e ? n : i[xt](e - 1)
    },
    _gU: function (t) {
      var i, n = t._kP,
        e = (i = n ? n._gX : this[On])[b](t);
      if (e < 0) throw new Error(Ln + t + "' not exist in the box");
      return e == i[N] - 1 ? n ? this._gU(n) : null : i[xt](e + 1)
    },
    forEachByDepthFirst: function (t, i, n) {
      return !!this[On][N] && DC(this.$roots, t, i, n)
    },
    forEachByDepthFirstReverse: function (t, i, n) {
      return !!this[On][N] && IC(this[On], t, i, n)
    },
    forEachByBreadthFirst: function (t, i) {
      return !!this.$roots[N] && LC(this.$roots, t, i)
    },
    forEachByBreadthFirstReverse: function (t, i) {
      return !!this[On].length && function (t, i, n) {
        for (var e, s = (t._kH || t).slice(0); s.length;) {
          if (e = s[s[N] - 1], s = s[M](0, s[N] - 1), !1 === i.call(n, e)) return !1;
          if (e.hasChildren()) {
            var h = e.children;
            h = h._kH || h, s = s[B](h)
          }
        }
        return !0
      }(this[On], t, i)
    },
    clear: function () {
      return !!XC(this, _B, Ot) && (this[On][Ot](), this.selectionModel[Ot](), !0)
    }
  }, GC(_B, uB), TN(_B[_], {
    selectionModel: {
      get: function () {
        return this[wn]
      }
    },
    roots: {
      get: function () {
        return this[On]
      }
    }
  });
  var lB = function (t) {
    HC(this, lB), this.box = t, this._oAoxChangeListener = {
      onEvent: function (t) {
        fB.KIND_REMOVE == t[wi] ? null != t[bn] ? this.remove(t.data) : null != t.datas && this[en](t[Rn]) : fB[xn] == t[wi] && this[Ot]()
      }
    }, this.box[pn].addListener(this[Pn], this)
  };

  function dB(t) {
    return t[kn](/^-ms-/, Cn)[kn](/-([\da-z])/gi, function (t, i) {
      return i[Nn]()
    })
  }
  lB.prototype = {
    box: null,
    isSelected: function (t) {
      return this[mt](t.id || t)
    },
    select: function (t) {
      return this.add(t)
    },
    unselect: function (t) {
      return this[en](t)
    },
    reverseSelect: function (t) {
      return this[jt](t) ? this[en](t) : this.add(t)
    },
    accept: function (t) {
      return this.box[jt](t)
    }
  }, GC(lB, uB);
  var vB = null,
    bB = null,
    yB = function () {
      if (!x.createElement) return function (t) {
        return t
      };
      var n = x[Bn](Fn).style,
        e = {};
      return function (t) {
        if (e[t]) return e[t];
        var i = dB(t);
        return n[i] !== I || bB && n[i = dB(bB + i)] !== I ? e[t] = i : t
      }
    }();

  function gB(t, i) {
    var n, e, s = t.style;
    if (!s) return !1;
    for (n in i) i.hasOwnProperty(n) && (e = yB(n)) && (s[e] = i[n]);
    return t
  }

  function EB(t, i, n) {
    (i = yB(i)) && (t[Yn][i] = n)
  }

  function xB(t, i) {
    if (!vB) return !1;
    i && !vN(i) && (i = function (t) {
      var i, n, e = "";
      for (i in t) t.hasOwnProperty(i) && (n = yB(i)) && (e += n[kn](/[A-Z]/g, function (t) {
        return $n + t[Gn]()
      })[kn](/^ms-/, Hn) + Xn + t[i] + Wn);
      return e ? e[Un](0, e.length - 1) : e
    }(i)), vB[jn] ? vB[jn](t + Zn + i + Qn, 0) : vB[Vn] && vB.addRule(t, i, 0)
  }
  var mB = {};

  function pB(t, i) {
    var n = t[Kn];
    return n ? (i = i || t.getBoundingClientRect())[Ht] / n : 1
  }

  function MB(t, i, n, e, s) {
    if (s) {
      var h = function (t) {
        h.handle.call(h[Ui], t)
      };
      return h[Ui] = s, h.handle = n, t[ee](i, h, e), h
    }
    return t[ee](i, n, e), n
  }! function () {
    if (x[zn]) {
      for (var t = x.head, i = "Webkit Moz O ms Khtml".split(C), n = 0; n < i.length; n++)
        if (t[Yn][i[n] + Jn] !== I) {
          bB = $n + i[n][Gn]() + $n;
          break
        } var e, s, h = x[Bn](Yn);
      for (var r in u.createPopup || h.appendChild(x[qn]("")), h[Mi] = te, h.id = ie, t.appendChild(h), vB = h.sheet, mB) {
        var a = mB[r];
        for (var o in e = r, s = "", a) s += yB(o) + Xn + a[o] + ne;
        xB(e, s)
      }
    }
  }(), IN.DOUBLE_CLICK_INTERVAL_TIME = 200, IN.LONG_PRESS_INTERVAL = 800, IN[se] = !0;
  var wB, TB = S in u,
    OB = TB && /mobile|tablet|ip(ad|hone|od)|android/i [A](navigator.userAgent);
  if (OB) wB = he;
  else {
    var AB = re in u ? "mousewheel" : ae;
    wB = oe + AB, TB && (wB += fe)
  }

  function SB(t) {
    return u[ce] && t instanceof u[ce]
  }

  function DB() {
    return IN.DOUBLE_CLICK_INTERVAL_TIME
  }

  function EN(t) {
    yN(t), gN(t)
  }

  function IB(t) {
    FB[_e] && FB[_e]._3C(t)
  }

  function LB(t) {
    FB[_e] && (FB[_e]._5C(t), RB(null))
  }
  wB = wB[k](/[\s,]+/);

  function RB(t) {
    FB[_e] != t && (FB[_e] && (FB[_e][de] = !1), FB[_e] = t)
  }
  var yN = function (t) {
      t[le] ? t.preventDefault() : t.returnValue = !1
    },
    gN = function (t) {
      t[G] && t[G](), t.cancelBubble = !0
    };

  function PB(t, i) {
    var n, e;
    e = t.touches ? (n = t.cx, t.cy) : (n = t[ve], t.clientY);
    var s = pB(i);
    return s && 1 !== s && (n /= s, e /= s), {
      timeStamp: t.timeStamp,
      x: n,
      y: e
    }
  }

  function kB(t, i, n) {
    this._mW = t, this[be] = n, this[ye] = i, this[ge] = new GB, this._iP()
  }
  kB[_] = {
    _iP: function () {
      var i, n;
      this.__k5 || (this[Ee] = function (t) {
        this._k5(t)
      }.bind(this), i = this._mW, n = this[Ee], wB[At](function (t) {
        i[ee](t, n, !1)
      }), fN || FB[xe] || (FB[xe] = !0, u[ee](me, IB, !0), u[ee](pe, LB, !0)))
    },
    _e9: function () {
      var i, n;
      this[Ee] && (i = this._mW, n = this[Ee], wB[At](function (t) {
        i[Me](t, n, !1)
      }))
    },
    _k5: function (t) {
      var i = (t = this._g7(t))[Mi];
      !1 === this._oA0(t, i) && this._iR(t, we + i)
    },
    _1H: function () {
      this[Te] && (clearTimeout(this.__longPressTimer), this.__longPressTimer = null)
    },
    _5B: function (t) {
      this.__onLongPressFunction || (this[Oe] = function () {
        this._m3Event && (this.__oBancelClick = !0, this._m3Event[Ae] ? this._iR(this._m3Event, Se) : this._iR(this[De], Ie))
      }.bind(this)), this._1H(), this[Te] = setTimeout(this[Oe], IN.LONG_PRESS_INTERVAL)
    },
    _6T: function (t) {
      for (var i, n, e = 0, s = 0, h = t.touches[N], r = 0; r < h;) {
        var a = t[tt][r++],
          o = a[ve],
          f = a.clientY;
        if (2 == r) {
          var c = n[0] - o,
            u = n[1] - f;
          i = Math[Lt](c * c + u * u)
        }
        n = [o, f], e += o, s += f
      }
      t.cx = e / h, t.cy = s / h, t.center = {
        x: t.cx,
        y: t.cy,
        clientX: t.cx,
        clientY: t.cy
      }, t.distance = i
    },
    _39: function (t) {
      this[ge][Ot](), this[Le] = PB(t, this._mW)
    },
    _46: function (t, i) {
      switch (i) {
        case "touchstart":
          gN(t), this._6T(t), this._39(t);
          var n = t.touches.length;
          this[De] || (this[De] = t, this._iT(t), this[Re] = !1, this._5B(t)), 1 == n && (this[Pe] = null), 2 <= n && !this[Pe] && (this[Pe] = {
            cx: t.cx,
            cy: t.cy,
            distance: t.distance
          });
          break;
        case "touchmove":
          if (EN(t), this._6T(t), 2 <= (n = t[tt].length) && this[Pe]) {
            var e = this[Pe][kt];
            t[ke] = t.distance / e, this.__m3MulTouchEvent[Ce] ? t[Ne] = t._scale / this.__m3MulTouchEvent[Ce] : t[Ne] = t[ke], this.__m3MulTouchEvent[Ce] = t[ke], this[Be] || (this.__pinching = !0, this._iR(t, Fe))
          }
          this.__dragging || (this.__dragging = !0, this._eC(t)), this._k6(t), this[Be] && this._iR(t, $e);
          break;
        case "touchend":
          EN(t), (n = t[tt][N]) && (this._6T(t), this._39(t)), n <= 1 && (this[Be] && (this.__pinching = !1, this._iR(t, Ge)), this[Pe] = null), 0 == n && (this[de] ? (this._iV(t), this[de] = !1) : t[He] - this[De][He] < .8 * DB() && this._g9(this[De]), this._eA(t));
          break;
        case "touchcancel":
          this[de] = !1, this[Be] = !1, this[Pe] = null
      }
      return !1
    },
    _oA0: function (t, i) {
      if (SB(t)) return this._46(t, i);
      if (Xe == i) gN(t), RB(this), this[Le] = PB(t, this._mW), this[De] || (this[De] = t, this._iT(t)), this.__oBancelClick = !1, this._5B(t);
      else if (pe == i) RB(), this._eA(t);
      else if (We == i) {
        if (this.__oBancelClick) return !0;
        if (this._9F()) return this._g9(t), !0
      } else if (Ue == i) {
        if (this._9F()) return !0
      } else {
        if (Ye == i) return this._iR(t, je), this[De] && ((e = t)[ue] || !1 === e.returnValue) && RB(this), !0;
        if (i == AB) {
          var n = t[Ze];
          if (n !== I ? n /= 120 : n = -t.detail, !n) return;
          return t.delta = n, this._iR(t, re)
        }
      }
      var e;
      return !1
    },
    _iR: function (t, i) {
      if (this._handler) {
        var n = this[ye];
        if (i = i || t[Mi], n instanceof Function) return n(t, i);
        if (!(n[yn] instanceof Function && !1 === n.accept(i, t))) return n.onevent instanceof Function && n[Qe](i, t, this[be] || this._mW), n[i] instanceof Function ? n[i].call(n, t, this[be] || this._mW) : void 0
      }
    },
    _g7: function (t) {
      return t
    },
    _5C: function (t) {
      this.__dragging && (EN(t), this[de] = !1, t = this._g7(t), this._iV(t), this._eA(t), this._iR(t, Ve))
    },
    _3A: 4,
    _3C: function (t) {
      if (this[De]) {
        if (EN(t), !this[de]) {
          var i = this[De][Ke] - t[Ke],
            n = this[De].screenY - t[ze];
          if (i * i + n * n < this._3A) return;
          this[de] = !0, this._eC(t)
        }
        this._k6(this._g7(t))
      }
    },
    _9F: function () {
      return IN[se]
    },
    _g9: function (t) {
      if (!this.__oBancelClick) {
        var i = DB();
        this.__oBlickTimer ? this.__dblclicked || (clearTimeout(this[Je]), this[Je] = null, this._iR(t, qe), this.__dblclicked = !0) : (this[ts] = !1, this[Je] = setTimeout(function (t, i) {
          this[Je] = null, this[ts] || this._iR(t, is)
        } [ns](this, t, i), i))
      }
    },
    _iT: function (t) {
      t[Ae] ? this._iR(t, es) : this._iR(t, ss)
    },
    _eA: function (t) {
      this._m3Event && (this._1H(), t[Ae] ? this._iR(t, hs) : this._iR(t, rs), this._m3Event = null, this[Le] = null)
    },
    _6U: function (t) {
      var i = this[Le];
      this[Le] = PB(t, this._mW), this._dragPoints.add(i, this[Le], t)
    },
    _eC: function (t) {
      this[Re] = !0, this._1H(), this[De][Ae] ? this._iR(this[De], as) : this._iR(this[De], os)
    },
    _k6: function (t) {
      this._6U(t), this[De][Ae] ? this._iR(t, fs) : this._iR(t, cs)
    },
    _iV: function (t) {
      if (t.timeStamp - this._o81[He] < 100) {
        var i = this[ge][us]();
        i && (t.vx = i.x, t.vy = i.y)
      }
      this._m3Event[Ae] ? this._iR(t, _s) : this._iR(t, ls), this[ge][Ot]()
    },
    _iW: function (t) {
      this._oA1()
    },
    _oA1: function () {
      FB[_e] == this && delete FB[_e], this._1H(), delete this[Le], this._m3Event && (delete this._m3Event[ds], delete this._m3Event.getUI, delete this._m3Event)
    }
  };
  var CB, NB, BB, FB = YC(function (t) {
    this._lZ = t, kB[d](this, [t.canvasPanel, null, t])
  }, {
    super: kB,
    _jI: function (t) {
      return this._lZ[vs](t)
    },
    _m1: function (t) {
      return this._lZ.getUIByMouseEvent(t)
    },
    _g7: function (t) {
      return (t instanceof MouseEvent || u.TouchEvent && t instanceof u[ce]) && (t[ds] = this._jI.bind(this, t), t[bs] = this._m1[ns](this, t)), t
    },
    _4L: function (i) {
      this._4N(function (t) {
        t[ys] instanceof Function && t[ys](i, this._lZ)
      })
    },
    _7G: function () {
      this._4N(function (t) {
        t[gs] instanceof Function && t[gs](this._lZ)
      })
    },
    _iW: function (t) {
      this._1Q && this._2A(this._1Q, t), this._$j && this._2A(this._$j, t), this[Es]()
    },
    _lZ: null,
    _1Q: null,
    _$j: null,
    _7I: function (t) {
      if (this._1Q == t) return !1;
      this._1Q && this._1Q[N] && this._2A(this._1Q), this._1Q = t
    },
    _8: function (t) {
      this._$j || (this._$j = []), this._$j.push(t)
    },
    _4: function (t) {
      this._$j && 0 != this._$j[N] && FC(this._$j, t)
    },
    _iR: function (t, i, n) {
      this._lZ[i] instanceof Function && this._lZ[i][m](this._lZ, t, n), this._1Q && this._hC(t, i, this._1Q, n), this._$j && this._hC(t, i, this._$j, n)
    },
    _4N: function (t) {
      this._1Q && PC(this._1Q, t, this), this._$j && PC(this._$j, t, this)
    },
    _hC: function (t, i, n, e) {
      if (bN(n))
        for (var s = 0; s < n[N]; s++) {
          var h = n[s];
          this[xs](t, i, h, e)
        } else this[xs](t, i, n, e)
    },
    _o8B: function (t, i, n, e) {
      if (!(n[yn] instanceof Function && !1 === n[yn](i, t, this._lZ, e))) {
        n[Qe] instanceof Function && n[Qe](i, t, this._lZ, e);
        var s = n[i];
        s instanceof Function && s.call(n, t, this._lZ, e)
      }
    },
    _2P: function (t) {
      t[ms] instanceof Function && t.destroy[m](t, this._lZ)
    },
    _2A: function (t, i) {
      if (bN(t))
        for (var n = 0; n < t[N]; n++) {
          var e = t[n];
          e && this._2P(e, i)
        } else this._2P(t, i)
    }
  });

  function $B(t) {
    return hN && t.metaKey || !hN && t.ctrlKey
  }

  function GB() {
    this[ps] = []
  }

  function HB(t) {
    this._l0 = t
  }
  GB[_] = {
    limitCount: 10,
    points: null,
    add: function (t, i, n) {
      0 == this[ps][N] && (this._m3X = t.x, this._m3Y = t.y);
      var e = i[He] - t[He] || 1;
      n[Ms] = e;
      var s = i.x - t.x,
        h = i.y - t.y;
      n.dx = s, n.dy = h, n[ws] = this[Ts], n.startY = this[Os], n[As] = i.x - this._m3X, n.totalDeltaY = i.y - this._m3Y, this[ps][M](0, 0, {
        interval: e,
        dx: s,
        dy: h
      }), this[ps][N] > this[Ss] && this[ps].pop()
    },
    getCurrentSpeed: function () {
      if (!this.points[N]) return null;
      for (var t = 0, i = 0, n = 0, e = 0, s = this[ps][N]; e < s; e++) {
        var h = this[ps][e],
          r = h[Ms];
        if (150 < r) {
          t = 0;
          break
        }
        if (t += r, i += h.dx, n += h.dy, 300 < t) break
      }
      return 0 == t || 0 == i && 0 == n ? null : {
        x: i / t,
        y: n / t
      }
    },
    clear: function () {
      this.points = []
    }
  }, BB = tN ? (CB = Ds, NB = Is, Ls) : iN ? (CB = Rs, NB = Ps, ks) : (NB = CB = Cs, Ns);
  var XB = Math.PI,
    WB = Math.pow,
    UB = Math.sin,
    YB = 1.70158,
    jB = {
      swing: function (t) {
        return -Math.cos(t * XB) / 2 + .5
      },
      easeNone: function (t) {
        return t
      },
      easeIn: function (t) {
        return t * t
      },
      easeOut: function (t) {
        return (2 - t) * t
      },
      easeBoth: function (t) {
        return (t *= 2) < 1 ? .5 * t * t : .5 * (1 - --t * (t - 2))
      },
      easeInStrong: function (t) {
        return t * t * t * t
      },
      easeOutStrong: function (t) {
        return 1 - --t * t * t * t
      },
      easeBothStrong: function (t) {
        return (t *= 2) < 1 ? .5 * t * t * t * t : .5 * (2 - (t -= 2) * t * t * t)
      },
      elasticIn: function (t) {
        return 0 === t || 1 === t ? t : -WB(2, 10 * --t) * UB(2 * XB * (t - .075) / .3)
      },
      elasticOut: function (t) {
        return 0 === t || 1 === t ? t : WB(2, -10 * t) * UB(2 * XB * (t - .075) / .3) + 1
      },
      elasticBoth: function (t) {
        return 0 === t || 2 == (t *= 2) ? t : t < 1 ? WB(2, 10 * --t) * UB(2 * XB * (t - .1125) / .45) * -.5 : WB(2, -10 * --t) * UB(2 * XB * (t - .1125) / .45) * .5 + 1
      },
      backIn: function (t) {
        return 1 === t && (t -= .001), t * t * ((YB + 1) * t - YB)
      },
      backOut: function (t) {
        return --t * t * ((YB + 1) * t + YB) + 1
      },
      backBoth: function (t) {
        return (t *= 2) < 1 ? t * t * ((1 + (YB *= 1.525)) * t - YB) * .5 : .5 * ((t -= 2) * t * ((1 + (YB *= 1.525)) * t + YB) + 2)
      },
      bounceIn: function (t) {
        return 1 - jB[Bs](1 - t)
      },
      bounceOut: function (t) {
        var i = 7.5625;
        return t < 1 / 2.75 ? i * t * t : t < 2 / 2.75 ? i * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? i * (t -= 2.25 / 2.75) * t + .9375 : i * (t -= 2.625 / 2.75) * t + .984375
      },
      bounceBoth: function (t) {
        return t < .5 ? .5 * jB.bounceIn(2 * t) : .5 * jB[Bs](2 * t - 1) + .5
      }
    };

  function ZB(t, i, n, e) {
    this._onStep = t, this._scope = i || this, this._3O = e, n && 0 < n && (this._jK = n)
  }
  HB[_] = {
    _l0: null,
    _8W: function () {
      this._oBallback instanceof Function && (this[Fs](), this[Fs] = null)
    },
    _m3: function (t) {
      var e = Date.now();
      this._n3(), this._oBallback = t, this[$s] = requestAnimationFrame(function t() {
        var i = Date.now(),
          n = i - e;
        !n || this._l0 && !1 !== this._l0(n) ? (e = i, this[$s] = requestAnimationFrame(t[ns](this))) : this._n3()
      } [ns](this))
    },
    _7J: function () {},
    _n3: function () {
      if (!this._requestID) return !1;
      this._7J(), this._8W(), u[at](this[$s]), delete this[$s]
    },
    _f0: function () {
      return null != this._requestID
    }
  }, ZB[_] = {
    _jK: 1e3,
    _3O: null,
    _f2: 0,
    _n3: function () {
      return this._f2 = 0, this._dF = 0, XC(this, ZB, Gs)
    },
    _dF: 0,
    _l0: function (t) {
      if (this._f2 += t, this._f2 >= this._jK) return this[Hs][m](this[be], 1, (1 - this._dF) * this._jK, t, this._jK), !1;
      var i = this._f2 / this._jK;
      if (this._3O && (i = this._3O(i)), !1 === this[Hs].call(this._scope, i, (i - this._dF) * this._jK, t, this._jK)) return !1;
      this._dF = i
    }
  }, GC(ZB, HB);

  function QB(t) {
    DN(t)
  }

  function VB(i, n, e, t, s) {
    !1 !== e && !1 !== t || (s = !1);
    try {
      var h, r = new XMLHttpRequest,
        a = encodeURI(i);
      !1 !== s && (h = 0 < a[b](Xs) ? "&" : Xs, a += h + Ws + Date.now()), r[Us](Ys, a), r[js] = function (t) {
        4 == r[Zs] && (r[Qs] && 200 != r[Qs] ? (e || QB)(pt + i + Vs) : n && n(r))
      }, r.send(t)
    } catch (t) {
      (e || QB)(pt + i + Vs, t)
    }
  }
  var KB = {
    version: Ks,
    extend: GC,
    doSuperConstructor: HC,
    doSuper: XC,
    createFunction: function (t, i) {
      return i[ns](t)
    },
    setClass: uN,
    appendClass: _N,
    removeClass: lN,
    forEach: PC,
    forEachReverse: CC,
    isNumber: dN,
    isString: vN,
    isBoolean: function (t) {
      return t !== I && (t instanceof Boolean || zs == typeof t)
    },
    isArray: bN,
    eventPreventDefault: yN,
    eventStopPropagation: gN,
    stopEvent: EN,
    callLater: function (t, i, n) {
      return i instanceof Object ? t = t[ns](i) : i && !n && (n = parseInt(i)), i && !n && (n = parseInt(i)), n ? setTimeout(t, n) : setTimeout(t)
    },
    nextFrame: function (t, i) {
      return i && (t = t[ns](i)), u[nt](t)
    },
    forEachChild: AC,
    forEachByDepthFirst: DC,
    forEachByDepthFirstReverse: IC,
    forEachByBreadthFirst: LC,
    randomInt: xN,
    randomBool: function () {
      return .5 <= Math[W]()
    },
    randomColor: function (t) {
      if (t && 0 < t && t < 1) {
        var i = Math[X](16777215 * Math.random());
        return j + (i >> 16 & 255) + Z + (i >> 8 & 255) + Z + (255 & i) + Z + t[Q](2) + V
      }
      return MN(Math[X](16777215 * Math.random()))
    },
    addEventListener: MB,
    getFirstElementChildByTagName: function (t, i) {
      i = i.toUpperCase();
      for (var n = zC ? t[Js] : t[qs]; n && (1 != n[th] || n.tagName && n[ih][Nn]() != i);) n = zC ? n.nextSibling : n[nh];
      return n && 1 == n[th] && n[ih] && n[ih][Nn]() == i ? n : null
    }
  };
  KB[eh] = fN, KB.isIOS = rN, KB[Vt] = HN, KB[sh] = XN, KB.Rect = WN, KB[hh] = $N, KB[rh] = CN, KB[ah] = UN, KB[oh] = tB, KB.PropertyChangeEvent = iB, KB.ListEvent = fB, KB[fh] = rB, KB.Dispatcher = oB, KB[ch] = YN, KB[uh] = cB, KB[_h] = lB, KB[lh] = _B, KB[dh] = {
    onEvent: function (t) {},
    beforeEvent: function (t) {}
  }, KB[vh] = VB, KB[bh] = function (n, e, s, t, i) {
    VB(n, function (t) {
      if (e) {
        var i = t[yh];
        if (!i) return void(s || QB)(pt + n + gh);
        e(i)
      }
    }, s, t, i)
  }, KB[Eh] = function (e, s, h, t, i) {
    VB(e, function (t) {
      if (s) {
        var i, n = t[xh];
        if (!n) return (h || QB)(pt + e + mh), i = new Error(pt + e + mh), s(n, i);
        try {
          n = JSON[ph](n)
        } catch (t) {
          (h || QB)(t), i = t
        }
        s(n, i)
      }
    }, h, t, i)
  }, KB[Mh] = $B, KB[wh] = RN, KB.HashList = LN, KB[Th] = kB, KB[Oh] = function (t) {
    alert(t)
  }, KB[Ah] = function (t, i, n, e) {
    var s = prompt(t, i);
    return s != i && n ? n[m](e, s) : s
  }, KB[Sh] = function (t, i, n) {
    // by Winters: remove Confirm 
    // var e = confirm(t);
    // return e && i ? i[m](n) : e
    return i[m](n)
  }, KB[Dh] = xB;
  var zB = {
    IMAGE_ADJUST_FLIP: Ih,
    IMAGE_ADJUST_MIRROR: Lh,
    SELECTION_TYPE_BORDER_RECT: Rh,
    SELECTION_TYPE_BORDER: Ph,
    SELECTION_TYPE_SHADOW: kh,
    NS_SVG: "http://www.w3.org/2000/svg",
    PROPERTY_TYPE_ACCESSOR: 0,
    PROPERTY_TYPE_STYLE: 1,
    PROPERTY_TYPE_CLIENT: 2,
    EDGE_TYPE_DEFAULT: null,
    EDGE_TYPE_ELBOW: Ch,
    EDGE_TYPE_ELBOW_HORIZONTAL: Nh,
    EDGE_TYPE_ELBOW_VERTICAL: Bh,
    EDGE_TYPE_ORTHOGONAL: Fh,
    EDGE_TYPE_ORTHOGONAL_HORIZONTAL: $h,
    EDGE_TYPE_ORTHOGONAL_VERTICAL: Gh,
    EDGE_TYPE_HORIZONTAL_VERTICAL: Hh,
    EDGE_TYPE_VERTICAL_HORIZONTAL: Xh,
    EDGE_TYPE_EXTEND_TOP: Wh,
    EDGE_TYPE_EXTEND_LEFT: Uh,
    EDGE_TYPE_EXTEND_BOTTOM: Yh,
    EDGE_TYPE_EXTEND_RIGHT: jh,
    EDGE_TYPE_ZIGZAG: Zh,
    EDGE_CORNER_NONE: Qh,
    EDGE_CORNER_ROUND: Vh,
    EDGE_CORNER_BEVEL: Kh,
    GROUP_TYPE_RECT: zh,
    GROUP_TYPE_CIRCLE: Jh,
    GROUP_TYPE_ELLIPSE: qh,
    SHAPE_CIRCLE: tr,
    SHAPE_RECT: zh,
    SHAPE_ROUNDRECT: ir,
    SHAPE_STAR: nr,
    SHAPE_TRIANGLE: er,
    SHAPE_HEXAGON: sr,
    SHAPE_PENTAGON: hr,
    SHAPE_TRAPEZIUM: rr,
    SHAPE_RHOMBUS: ar,
    SHAPE_PARALLELOGRAM: or,
    SHAPE_HEART: fr,
    SHAPE_DIAMOND: cr,
    SHAPE_CROSS: ur,
    SHAPE_ARROW_STANDARD: _r,
    SHAPE_ARROW_1: lr,
    SHAPE_ARROW_2: dr,
    SHAPE_ARROW_3: vr,
    SHAPE_ARROW_4: br,
    SHAPE_ARROW_5: yr,
    SHAPE_ARROW_6: gr,
    SHAPE_ARROW_7: Er,
    SHAPE_ARROW_8: xr,
    SHAPE_ARROW_OPEN: mr
  };

  function GN(t, i, n, e, s, h, r, a) {
    return !(r <= 0 || a <= 0 || n <= 0 || e <= 0) && (a += h, n += t, e += i, ((r += s) < s || t < r) && (a < h || i < a) && (n < t || s < n) && (e < i || h < e))
  }

  function XN(t, i, n, e, s, h, r, a) {
    return t <= s && i <= h && s + r <= t + n && h + a <= i + e
  }

  function JB(t, i, n) {
    return t instanceof Object && t.x ? tF(t, i, 0, 0) : qB(t, i, n, 0, 0)
  }

  function qB(t, i, n, e, s) {
    var h = Math.sin(n),
      r = Math.cos(n),
      a = t - e,
      o = i - s;
    return new CN(t = a * r - o * h + e, i = a * h + o * r + s, n)
  }

  function tF(t, i, n, e) {
    n = n || 0, e = e || 0;
    var s = Math.sin(i),
      h = Math.cos(i),
      r = t.x - n,
      a = t.y - e;
    return t.x = r * h - a * s + n, t.y = r * s + a * h + e, t
  }

  function iF(t, i, n) {
    return nF(t, i, n, 0, 0)
  }

  function nF(t, i, n, e, s) {
    var h = qB(t.x, t.y, i, e, s),
      r = qB(t.x + t[Ht], t.y, i, e, s),
      a = qB(t.x + t.width, t.y + t.height, i, e, s),
      o = qB(t.x, t.y + t[Xt], i, e, s);
    return n ? n[Ot]() : n = new WN, n[pr](h), n[pr](r), n[pr](a), n[pr](o), n
  }
  zB[Mr] = wr, zB.LINE_CAP_TYPE_ROUND = Vh, zB[Tr] = Or, zB[Ar] = Kh, zB[Sr] = Vh, zB[Dr] = Ir, zB[Lr] = Rr, zB[Pr] = kr, zB[Cr] = Ch, IN[Nr] = zB[Br], IN.SELECTION_TOLERANCE = OB ? 8 : 3, IN.SELECTION_BORDER = 2, IN[Fr] = 7, IN[$r] = MN(3422561023), IN.SELECTION_TYPE = zB[Br], IN.BORDER_RADIUS = 10, IN.POINTER_WIDTH = 10, IN[Gr] = 10, IN.IMAGE_MAX_SIZE = 200, IN[Hr] = 1.2;
  var eF, sF = u[Xr] || 1;

  function hF(t, i) {
    var n = this.ratio || 1;
    this[Yn].width = t + Wr, this[Yn].height = i + Wr, this[Ht] = t * n, this[Xt] = i * n
  }

  function rF(t, i, n) {
    var e = x[Bn](Ur);
    if (e.g = e.getContext(Yr), !0 !== t && !n) return t && i && (e[Ht] = t, e[Xt] = i), e;
    var s, h = e.g;
    return h[jr] = e[jr] = (s = h[Zr] || h[Qr] || h[Vr] || h.oBackingStorePixelRatio || h[Kr] || 1, sF / s), e[zr] = hF, h._mC = function () {
      this[Ur].width = this[Ur][Ht]
    }, t && i && e[zr](t, i), e
  }

  function aF(t, i) {
    return eF = eF || rF(), t && i && (eF[Ht] = t, eF[Xt] = i), eF.g
  }
  sF < 1 && (sF = 1), KB.createCanvas = rF;
  var oF = eN && !fN;

  function fF(t, i, n) {
    return (n || IN.FONT_STYLE) + C + (i || IN[Jr]) + Et + (t || IN[qr])
  }

  function cF(t, i, n, e, s) {
    var h;
    try {
      h = t[ta](i, n, e, s)
    } catch (t) {}
    return h
  }

  function uF(s, h) {
    var r = 1 / (h = h || s(1)),
      a = .5 * r,
      o = Math.min(1, h / 100);
    return function (t) {
      if (t <= 0) return 0;
      if (h <= t) return 1;
      for (var i = t * r, n = 0; n++ < 10;) {
        var e = t - s(i);
        if (Math.abs(e) <= o) return i;
        i += e * a
      }
      return i
    }
  }

  function _F(t, i, n) {
    var e = 1 - t,
      s = e * e * i[0] + 2 * e * t * i[2] + t * t * i[4],
      h = e * e * i[1] + 2 * e * t * i[3] + t * t * i[5];
    if (n) {
      var r = (i[0] + i[4] - 2 * i[2]) * t + i[2] - i[0],
        a = (i[1] + i[5] - 2 * i[3]) * t + i[3] - i[1];
      return {
        x: s,
        y: h,
        rotate: Math[Ct](a, r)
      }
    }
    return {
      t: t,
      x: s,
      y: h
    }
  }

  function lF(t, i, n) {
    var e = t - 2 * i + n;
    return 0 != e ? (t - i) / e : -1
  }

  function dF(t, i) {
    return Math.abs(t - i) < 1e-7
  }

  function vF(t, i) {
    return dF(t[0], i[0]) && dF(t[1], i[1])
  }

  function bF(t, i, n) {
    var e = 1 - t,
      s = i[0],
      h = i[2],
      r = i[4],
      a = i[6],
      o = s * e * e * e + 3 * h * t * e * e + 3 * r * t * t * e + a * t * t * t;
    if (n) var f = 3 * t * t * a + (6 * t - 9 * t * t) * r + (9 * t * t - 12 * t + 3) * h + (-3 * t * t + 6 * t - 3) * s;
    var c = (s = i[1]) * e * e * e + 3 * (h = i[3]) * t * e * e + 3 * (r = i[5]) * t * t * e + (a = i[7]) * t * t * t;
    if (n) {
      var u = 3 * t * t * a + (6 * t - 9 * t * t) * r + (9 * t * t - 12 * t + 3) * h + (-3 * t * t + 6 * t - 3) * s;
      return {
        x: o,
        y: c,
        rotate: Math.atan2(u, f)
      }
    }
    return {
      x: o,
      y: c
    }
  }

  function yF(t, i, n) {
    return gF(i, n, t.cx, t.cy) <= t[ia] + MF
  }
  var gF = function (t, i, n, e) {
    var s = t - n,
      h = i - e;
    return s * s + h * h
  };

  function EF(t, i, n, e) {
    return n = n || RN(t.x, t.y, i.x, i.y), new xF((t.x + i.x) / 2, (t.y + i.y) / 2, n / 2, t, i, null, e)
  }

  function xF(t, i, n, e, s, h, r) {
    this.cx = t, this.cy = i, this.r = n, this[ia] = n * n, this.p1 = e, this.p2 = s, this.p3 = h, this._otherPoint = r
  }

  function mF(t, i, n, e) {
    this.cx = t, this.cy = i, this[Ht] = n, this[Xt] = e
  }

  function pF(t) {
    var i = t[0],
      n = t[1],
      e = t[2];
    return function t(i, n, e, s, h) {
      for (var r, a, o, f = i[N], c = h[ia], u = 0; u < f; u++)
        if ((r = i[u]) != n && r != e && r != s) {
          var _ = gF(h.cx, h.cy, r.x, r.y);
          c < _ - MF && (c = _, a = r)
        } if (!a) return h;
      var l = xF[na](a, n, e),
        d = xF._l6Circle(a, n, s),
        v = xF[na](a, s, e);
      return yF(l, s.x, s.y) && (o = l), yF(d, e.x, e.y) && (!o || o.r > d.r) && (o = d), yF(v, n.x, n.y) && (!o || o.r > v.r) && (o = v), t(i, n = o.p1, e = o.p2, s = o.p3 || o[ea], o)
    }(t, i, n, e, xF[na](i, n, e))
  }
  xF[_] = {
    equals: function (t) {
      return this.cx == t.cx && this.cy == t.cy && this.r == t.r
    }
  }, xF[na] = function (t, i, n) {
    if (!n) return EF(t, i);
    var e, s = gF(t.x, t.y, i.x, i.y),
      h = gF(t.x, t.y, n.x, n.y),
      r = gF(n.x, n.y, i.x, i.y);
    if (h + r <= s + MF) return EF(t, i, 0, n);
    if (s + r <= h + MF) return EF(t, n, 0, i);
    if (s + h <= r + MF) return EF(i, n, 0, t);
    Math.abs(n.y - i.y) < 1e-4 && (e = t, t = i, i = e), e = n.x * (t.y - i.y) + t.x * (i.y - n.y) + i.x * (-t.y + n.y);
    var a = (n.x * n.x * (t.y - i.y) + (t.x * t.x + (t.y - i.y) * (t.y - n.y)) * (i.y - n.y) + i.x * i.x * (-t.y + n.y)) / (2 * e),
      o = (i.y + n.y) / 2 - (n.x - i.x) / (n.y - i.y) * (a - (i.x + n.x) / 2);
    return new xF(a, o, RN(a, o, t.x, t.y), t, i, n)
  };
  var MF = .01;

  function wF(t) {
    return (t = AF(t)) > Math.PI / 2 && t < 3 * Math.PI / 2
  }

  function TF(t, i, n, e) {
    var s = function (t, i) {
      if (!this._l2 || this._hD[N] < 2) {
        if (this._hD.length) {
          var n = !1 !== i ? this._hD[0][sa] : this._hD[this._hD[N] - 1].lastPoint;
          return t && (n.x += t), n
        }
        return null
      }
      var e = this._hD;
      !1 === i && (t += this._l2);
      var s, h = e[0];
      if (t <= 0) return LH(h[ps][0], h[ps][1], e[1][ps][0], e[1][ps][1], t, 0);
      if (t >= this._l2) {
        var r, a, o = (h = e[e[N] - 1])[ps],
          f = o[(l = o[N]) - 2],
          c = o[l - 1];
        return a = 4 <= l ? (r = o[l - 4], o[l - 3]) : (r = (v = (h = e[e[N] - 2]).lastPoint).x, v.y), LH(f, c, f + f - r, c + c - a, t - this._l2, 0)
      }
      for (var u = 0, _ = 1, l = e[N]; _ < l; _++)
        if ((s = e[_])._l2) {
          if (!(u + s._l2 < t)) {
            var d, v = h[ha];
            if (s.type == h$) {
              var b = s.points;
              d = OF(t - u, s, v.x, v.y, b[0], b[1], b[2], b[3], s._r)
            } else {
              if (!s._lf) return LH(v.x, v.y, s.points[0], s[ps][1], t - u, 0);
              var y = uF(s._lf, s._l2)(t - u);
              b = s[ps], (d = s[Mi] == s$ && 6 == b.length ? bF(y, [v.x, v.y][B](b), !0) : _F(y, [v.x, v.y].concat(b), !0)).t = y
            }
            return d
          }
          u += s._l2, h = s
        } else h = s
    } [m](this, t, n);
    return s && i && (s[It] ? (e && wF(s.rotate) && (i = -i), s.x -= i * Math.sin(s[It] || 0), s.y += i * Math.cos(s[It] || 0)) : s.y += i), s
  }

  function OF(t, i, n, e, s, h, r, a) {
    if (t <= i._l1) return LH(n, e, s, h, t, t);
    if (t >= i._l2) return t -= i._l2, LH(i[ra], i[aa], r, a, t, t);
    if (t -= i._l1, i._o) {
      var o = t / i._r;
      i._CCW && (o = -o);
      var f = qB(i[oa], i[fa], o, i._o.x, i._o.y);
      return f[It] += i._o81 || 0, f.rotate += Math.PI, f
    }
    return LH(i[oa], i._p1y, i._p2x, i._p2y, t, t)
  }

  function BN(t, i, n) {
    var e, s, h;
    0 == t._o8 ? (e = -1, h = 0, s = i) : 0 == t._oB ? (e = 0, h = 1, s = n) : (e = -1 / t._o8, s = (t._o8 - e) * i + t._oA, h = 1);
    var r = new NN;
    return r._o8 = e, r._oA = s, r._oB = h, r._o2 = i, r._o4 = n, r
  }

  function AF(t) {
    return (t %= PN) < 0 && (t += PN), t
  }

  function SF(t, i, n, e) {
    return Math[Ct](e - i, n - t)
  }
  var DF = {
      _o8Z: function (t, i, n, e, s, h) {
        if (vN(t) && (t = YN[gi](t)), !t) return {
          x: 0,
          y: 0
        };
        var r = 0,
          a = 0,
          o = i._l2;
        if (n = n || 0, t.x === I) {
          var f = t[ii],
            c = t.verticalPosition,
            u = !0;
          switch (f) {
            case ZN:
              u = !1;
              break;
            case "c":
              r += o / 2
          }
          switch (c) {
            case QN:
              a -= n / 2;
              break;
            case VN:
              a += n / 2
          }
        } else r = t.x, a = t.y, 0 < Math.abs(r) && Math.abs(r) < 1 && (r *= o);
        s && null != e && (a += e.y, Math.abs(e.x) < 1 ? r += e.x * o : r += e.x);
        var _ = TF[m](i, r, a, u, h);
        return _ ? (s || null == e || _[ca](e), _) : {
          x: 0,
          y: 0
        }
      },
      _n5: function (t, i, n) {
        var e = i[Mi],
          s = i[ps];
        switch (e) {
          case h$:
            t[ua](s[0], s[1], s[2], s[3], i._r);
            break;
          case i$:
            t.moveTo(s[0], s[1]);
            break;
          case n$:
            t[_a](s[0], s[1]);
            break;
          case e$:
            t[la](s[0], s[1], s[2], s[3]);
            break;
          case s$:
            t[da](s[0], s[1], s[2], s[3], s[4], s[5]);
            break;
          case r$:
            t[va]()
        }
      },
      _66: function (t, i, n, e) {
        var s = i[Mi];
        if (s != i$ && s != r$) {
          var h = n[ha],
            r = i[ps];
          switch (n[Mi] == i$ && t.add(h.x, h.y), s) {
            case h$:
              ! function (t, i, n, e, s, h, r, a) {
                var o = RN(i, n, e, s),
                  f = RN(e, s, h, r);
                if (!o || !f) return t._d = 0, t._r = 0, t._l1 = o, t._l2 = f, t._l2 = 0;
                var c = SF(e, s, i, n),
                  u = SF(e, s, h, r),
                  _ = (t[Le] = c) - (t[ba] = u);
                (_ = AF(_)) > Math.PI && (_ = 2 * Math.PI - _, t[ya] = !0);
                var l = Math.PI - _,
                  d = Math.tan(_ / 2),
                  v = a / d,
                  b = Math.min(o, f);
                b < v && (a = d * (v = b));
                var y, g = e + Math.cos(c) * v,
                  E = s + Math.sin(c) * v,
                  x = e + Math.cos(u) * v,
                  m = s + Math.sin(u) * v,
                  p = new NN(i, n, e, s),
                  M = new NN(e, s, h, r),
                  w = BN(p, g, E),
                  T = BN(M, x, m),
                  O = w._3N(T),
                  A = Math[Ct](E - O.y, g - O.x),
                  S = Math[Ct](m - O.y, x - O.x);
                y = t._CCW ? S : A;
                for (var D, I = 0; I < 4;) {
                  var L, R;
                  if (AF(I * kN - y) <= l && (D ? D++ : D = 1, R = 0 == I ? (L = O.x + a, O.y) : 1 == I ? (L = O.x, O.y + a) : 2 == I ? (L = O.x - a, O.y) : (L = O.x, O.y - a), t[ga + D] = {
                      x: L,
                      y: R
                    }, 2 == D)) break;
                  I++
                }
                t[oa] = g, t[fa] = E, t[ra] = x, t[aa] = m, t._o = O, t._d = v, t._r = a, t._l1 = o - v, t._l2 = f - v, t._l2 = t._l1 + l * a
              }(i, h.x, h.y, r[0], r[1], r[2], r[3], r[4]), t.add(r[0], r[1]), t.add(i[oa], i[fa]), t.add(i[ra], i[aa]), i[Ea] && t.add(i[Ea].x, i[Ea].y), i.$boundaryPoint2 && t.add(i.$boundaryPoint2.x, i[xa].y);
              break;
            case n$:
              t.add(r[0], r[1]);
              break;
            case e$:
              ! function (t, i) {
                i.add(t[4], t[5]);
                var n = lF(t[0], t[2], t[4]);
                if (0 < n && n < 1) {
                  var e = _F(n, t);
                  i.add(e.x, e.y)
                }
                var s = lF(t[1], t[3], t[5]);
                0 < s && s < 1 && (e = _F(s, t), i.add(e.x, e.y))
              }([h.x, h.y][B](r), t);
              break;
            case s$:
              ! function (t, i) {
                i.add(t[6], t[7]);
                var n = function (t, i, n, e, s, h, r, a) {
                  for (var o, f, c, u, _, l, d, v, b = [], y = 0; y < 2; ++y)
                    if (c = 0 === y ? (f = 6 * t - 12 * n + 6 * s, o = -3 * t + 9 * n - 9 * s + 3 * r, 3 * n - 3 * t) : (f = 6 * i - 12 * e + 6 * h, o = -3 * i + 9 * e - 9 * h + 3 * a, 3 * e - 3 * i), Math.abs(o) < 1e-12) {
                      if (Math.abs(f) < 1e-12) continue;
                      0 < (u = -c / f) && u < 1 && b.push(u)
                    } else d = f * f - 4 * c * o, v = Math[Lt](d), d < 0 || (0 < (_ = (-f + v) / (2 * o)) && _ < 1 && b[D](_), 0 < (l = (-f - v) / (2 * o)) && l < 1 && b[D](l));
                  return b
                } [d](this, t);
                if (n)
                  for (var e = 0; e < n[N]; e++) {
                    var s = n[e];
                    if (!(s < 0 || 1 < s)) {
                      var h = bF(s, t);
                      i.add(h.x, h.y)
                    }
                  }
              }([h.x, h.y][B](r), t);
              break;
            case r$:
              e && t.add(e[ps][0], e[ps][1])
          }
        }
      },
      _67: function (t, i, n) {
        var e = t[Mi];
        if (e == i$) return 0;
        var s, h, r, a, o, f, c, u, _, l, d, v, b, y, g, E, x, m, p, M, w, T, O, A, S, D, I = i[ha],
          L = t[ps];
        switch (e == s$ && 4 == L[N] && (e = e$), e) {
          case n$:
            return RN(L[0], L[1], I.x, I.y);
          case h$:
            return t._l2;
          case e$:
            var R = function (t) {
              if (vF([t[0], t[1]], [t[2], t[3]])) {
                var i = t[0],
                  n = t[1],
                  e = t[4],
                  s = t[5],
                  h = Math[Lt](gF(i, n, e, s));
                return function (t) {
                  return h * t
                }
              }
              if (vF([t[0], t[1]], [t[4], t[5]]) || vF([t[2], t[3]], [t[4], t[5]])) return i = t[0], n = t[1], e = t[2], s = t[3], h = Math[Lt](gF(i, n, e, s)),
                function (t) {
                  return h * t
                };
              var r = t[0],
                a = t[2],
                o = t[4],
                f = r - 2 * a + o,
                c = 2 * a - 2 * r,
                u = (r = t[1]) - 2 * (a = t[3]) + (o = t[5]),
                _ = 2 * a - 2 * r,
                l = 4 * (f * f + u * u),
                d = 4 * (f * c + u * _),
                v = c * c + _ * _;
              if ((h = 4 * l * v - d * d) < 1e-5 && -1e-5 < h) {
                var b = RN(t[0], t[1], t[2], t[3]),
                  y = RN(t[2], t[3], t[4], t[5]);
                return function (t) {
                  return (2 * b + (y - b) * t) * t
                }
              }
              var g, E = 1 / h,
                x = .125 * Math.pow(l, -1.5),
                m = 2 * Math[Lt](l),
                p = (h * (g = d / Math[Lt](h), Math.log(g + Math.sqrt(g * g + 1))) + Math.sqrt(l) * (2 * d) * Math.sqrt(v)) * x;
              return function (t) {
                var i = d + 2 * t * l,
                  n = i / Math[Lt](h),
                  e = i * i * E;
                return (h * Math.log(n + Math[Lt](1 + e)) + m * i * Math[Lt](v + t * d + t * t * l)) * x - p
              }
            }([I.x, I.y].concat(L));
            return (t._lf = R)(1);
          case s$:
            return s = [I.x, I.y][B](L), r = k(s[0], s[2], s[4], s[6]), a = k(s[1], s[3], s[5], s[7]), o = 1 / (h = h || 100), R = function (t) {
              if (!t) return 0;
              for (var i, n = 0, e = 0;;) {
                if (t <= (i = n + o)) return e + C(n, i - n);
                e += C(n, o), n = i
              }
            }, (t._lf = R)(1) || (f = [I.x, I.y][B](L), c = f[0], u = f[1], _ = f[2], l = f[3], d = f[4], v = f[5], b = f[6], y = f[7], w = 3 * (3 * (x = _ - 0) - (g = c - 0) - 3 * (p = d - 0) + (b - 0)), T = 6 * (g - 2 * x + p), O = 3 * (x - g), A = 3 * (3 * (m = l - 0) - (E = u - 0) - 3 * (M = v - 0) + (y - 0)), S = 6 * (E - 2 * m + M), D = 3 * (m - E), (P(0) + 4 * P(.5) + P(1)) / 6);
          case r$:
            if (I && n) return t[ps] = n[ps], RN(n.points[0], n[ps][1], I.x, I.y)
        }

        function P(t) {
          var i = w * t * t + T * t + O,
            n = A * t * t + S * t + D;
          return Math.sqrt(i * i + n * n)
        }

        function k(t, i, n, e) {
          var s = 3 * i - t - 3 * n + e,
            h = 2 * t - 4 * i + 2 * n,
            r = i - t;
          return function (t, i) {
            return 3 * (s * t * t + h * t + r)
          }
        }

        function C(t, i) {
          var n = r(t),
            e = a(t);
          return Math[Lt](n * n + e * e) * i
        }
        return 0
      }
    },
    IF = /^data:image\/(\w+);base64,/i,
    LF = /^gif/i,
    RF = /^svg/i,
    PF = 10,
    kF = 11,
    CF = 12,
    NF = 20,
    BF = 30;

  function FF(t, i, n, e, s) {
    if (i && n) {
      t[ma] = .5, t[pa] = Ma, t.strokeRect(0, 0, i, n), e && (t.fillStyle = e, t[wa](0, 0, i, n));
      var h = Math.min(i / 50, n / 38);
      t[Ta](), t[Oa] = .6, t.translate(i / 2, n / 2), t.scale(h, h), t[Aa](-20, -14), t.beginPath(), t[zh](0, 0, 40, 28), t[Sa](), t[Da] = Ia, t[La](), t.globalAlpha = 1, t[Ra](0, 21), t[_a](12, 12), t[_a](26, 28), t[Ra](18, 18), t[_a](28, 8), t[_a](40, 18), t.lineWidth = 2, t[pa] = Pa, t[ka](), s && (t[Ca](), t.moveTo(26, -4), t[_a](17, 11), t[_a](23, 17), t[_a](14, 32), t[ma] = 5, t[pa] = e || Na, t[ka]()), t[Ba]()
    }
  }

  function $F(t) {
    var i = IF.exec(t);
    if (i) return i[1];
    var n = t.lastIndexOf(q);
    return 0 <= n && n < t.length - 1 ? t.substring(n + 1) : void 0
  }

  function GF(t, i, n) {
    if (this._mQ = function (t) {
        if (!t) return null;
        if (t instanceof o$) return BF;
        if (t[Wa] instanceof Function) return NF;
        if (vN(t)) {
          var i = $F(t);
          if (i) {
            if (!zC && LF[A](i)) return CF;
            if (RF[A](i)) return kF
          }
          return PF
        }
      }(t), !this._mQ) throw new Error("the image format is not supported", t);
    this._mO = t, this[Ua] = i, this._9I = n, this[Ht] = i || IN[Fa], this[Xt] = n || IN[$a], this._kC = {}
  }
  IN[Fa] = 50, IN[$a] = 30, IN[Ga] = {
    draw: function (t, i) {
      FF(t, i.width, i.height, i[Ha])
    }
  }, IN.IMAGE_INVALID = {
    draw: function (t, i) {
      FF(t, i[Ht], i[Xt], i[Ha], !0)
    }
  }, IN[Xa] = 1e6, GF[_] = {
    _k7: 0,
    _6W: !0,
    _lQ: null,
    _k9: null,
    _mO: null,
    _mQ: null,
    _oA3: I,
    _9I: I,
    _6X: function () {
      return 1 == this._k7
    },
    getBounds: function (t) {
      return this._mQ == BF ? this._mO.getBounds(t) : (this._6W && this._gF(), this)
    },
    validate: function () {
      this._6W && this._gF()
    },
    _gF: function () {
      if (this._6W = !1, this._mQ == BF) return this._mO[Ya](), void this[ja](this._mO.bounds);
      if (this._mQ != NF) {
        if (1 != this._k7) try {
          this._eE()
        } catch (t) {
          this._k7 = 3, KB[Za](t)
        }
      } else this._9J()
    },
    _5E: function () {
      this._eG(), this._dispatcher.clear(), delete this._dispatcher
    },
    _iX: function (t) {
      this._lQ[Qa] && this._lQ[Qa][Va](this._lQ), this._k7 = 3, KB.error(Ka + this._mO), this[za] = null, this._k9 = null, this._lQ = null, !1 !== t && this._5E()
    },
    _eE: function () {
      var t, n, i, e, s, h, r, a, o, f, c, u, _, l, d, v = this._mO;
      if (this._k7 = 1, this[Ja] = new oB, this._mQ != CF) this._lQ || (this._lQ = x[Bn](qa), zC && (this._lQ[Yn][to] = io, x[no][eo](this._lQ))), zC ? (this._lQ[so] = function (t) {
        setTimeout(this._8I[ns](this), 100)
      }.bind(this), this._lQ.onerror = this._iX[ns](this)) : (this._lQ[so] = this._8I[ns](this), this._lQ[ho] = this._8I.bind(this)), this._lQ.src = v;
      else {
        for (var b in D$) this[b] = D$[b];
        t = this._mO, i = (n = this)._dI, e = this._iX, s = this._f5, l = {
          hdr: y(function (t) {
            h = t, (u = u || rF())[Ht] = h[Ht], u.height = h.height, n.width = h.width, n[Xt] = h[Xt]
          }),
          gce: y(function (t) {
            E(), o = f, c = f = a = r = null, r = t[ro] ? t[ao] : null, a = 10 * t.delayTime, f = t[oo]
          }),
          com: y(g),
          app: {
            NETSCAPE: y(g)
          },
          img: y(function (t) {
            c = c || u.getContext(Yr);
            var n = t.lctFlag ? t.lct : h.gct,
              e = c.getImageData(t[fo], t[co], t.width, t[Xt]);
            t[uo][At](function (t, i) {
              r !== t ? (e.data[4 * i + 0] = n[t][0], e[bn][4 * i + 1] = n[t][1], e.data[4 * i + 2] = n[t][2], e[bn][4 * i + 3] = 255) : 2 !== o && 3 !== o || (e[bn][4 * i + 3] = 0)
            }), c[_o](e, t.leftPos, t.topPos)
          }),
          eof: function (t) {
            E(), i[m](n)
          }
        }, d = new XMLHttpRequest, zC || d.overrideMimeType("text/plain; charset=x-user-defined"), d.onload = function (t) {
          _ = new I$(d.responseText);
          try {
            L$(_, l)
          } catch (t) {
            e[m](n, ph)
          }
        }, d[ho] = function () {
          e[m](n, lo)
        }, d.open(Ys, t, !0), d.send()
      }

      function y(i) {
        return function (t) {
          i(t)
        }
      }

      function g() {}

      function E() {
        if (c) {
          var t = c[ta](0, 0, h[Ht], h[Xt]),
            i = {
              data: t,
              _pixels: _$(t[bn], h[Ht], h[Xt]),
              delay: a
            };
          s.call(n, i)
        }
      }
    },
    _iZ: !0,
    _8I: function () {
      var t = this._lQ[Ht],
        i = this._lQ[Xt];
      if (t && i) {
        if (this._lQ[Qa] && this._lQ.parentNode[Va](this._lQ), this._k7 = 2, this[Ht] = t, this[Xt] = i, zC && this._mQ == kF) this[za] = null, this._iZ = !1;
        else if (this._mQ == kF || (n = $F(n = this._lQ.src), /^png/i [A](n) || /^gif/i.test(n))) {
          var h = rF();
          h[Ht] = t, h.height = i, h.g[vo](this._lQ, 0, 0, t, i),
            function (t) {
              for (var i = t[ta](0, 0, h.width, h.height)[bn], n = !1, e = 3, s = i[N]; e < s; e += 4)
                if (i[e] < 255) {
                  n = !0;
                  break
                } return n
            }(h.g) && (this._k9 = h, this[za] = function () {
              var t = h[Ht],
                i = h[Xt],
                n = cF(h.g, 0, 0, t, i);
              if (n) return _$(n[bn], t, i)
            }())
        }
        var n;
        this._5E()
      } else this._iX()
    },
    _9J: function () {
      var t = this._mO;
      if (t.draw instanceof Function) {
        if (!1 === t[bo] && t[Ht] && t.height) return this.width = t[Ht], void(this[Xt] = t[Xt]);
        var i = t[Ht] || IN[yo],
          n = t[Xt] || IN[yo],
          e = this._eF();
        e.width = i, e.height = n;
        var s = e.g;
        t[Wa](s);
        var h = cF(s, 0, 0, i, n);
        if (h) {
          var r = _$(h.data, i, n);
          this.x = r._x, this.y = r._y, this[Ht] = r[go], this.height = r[Eo], e[Ht] = this.width, e[Xt] = this.height, s[_o](h, -this.x, -this.y), this[za] = r
        }
      } else this._iX(!1)
    },
    _eF: function () {
      return this._k9 || (this._k9 = rF())
    },
    draw: function (t, i, n, e, s, h) {
      if (this[Ht] && this[Xt]) {
        i = i || 1, e = e || 1, s = s || 1;
        var r = this.width * e,
          a = this[Xt] * s;
        if (h && n[xo] && (t[xo] = n[xo], t[mo] = (n[mo] || 0) * i, t[po] = (n[po] || 0) * i, t.shadowOffsetY = (n[Mo] || 0) * i), 1 != this._k7)
          if (3 != this._k7) {
            if (this._mQ == BF) return t[wo](e, s), void this._mO[Wa](t, i, n);
            var o = this._gG(i, e, s);
            if (o) return (this.x || this.y) && t[Aa](this.x * e, this.y * s), t[wo](e / o[wo], s / o.scale), void o._n5(t, n.renderColor, n[To]);
            this._kA(t, i, e, s, this[Ht] * e, this[Xt] * s, n)
          } else IN.IMAGE_INVALID && IN[Oo].draw(t, {
            src: this._mO,
            width: r,
            height: a,
            renderColor: n.renderColor
          });
        else IN[Ga] && IN[Ga][Wa](t, {
          src: this._mO,
          width: r,
          height: a,
          renderColor: n[Ha]
        })
      }
    },
    _kA: function (t, i, n, e, s, h, r) {
      if (this._mQ == NF) return 1 != n && 1 != e && t.scale(n, e), void this._mO[Wa](t, r);
      if (this._lQ) {
        if (!nN) return void t[vo](this._lQ, 0, 0, s, h);
        n = i * s / this[Ht], e = i * h / this[Xt], t[wo](1 / n, 1 / e), t[vo](this._lQ, 0, 0, s * n, h * e)
      }
    },
    _kC: null,
    _gG: function (t, i, n) {
      if (this._mQ == NF && !1 === this._mO[bo]) return null;
      if (this._mQ == PF || (t *= Math.max(i, n)) <= 1) return this[Ao] || (this[Ao] = this._gH(this._k9 || this._lQ, 1, this._iZ)), this[Ao];
      var e = this._kC[So] || 0;
      if ((t = Math[c](t)) <= e) {
        for (var s = t, h = this._kC[s]; !h && ++s <= e;) h = this._kC[s];
        if (h) return h
      }
      t % 2 && t++;
      var r = this.width * t,
        a = this[Xt] * t;
      if (r * a > IN.MAX_CACHE_PIXELS) return null;
      var o = rF(r, a);
      return (this.x || this.y) && o.g[Aa](-this.x * t, -this.y * t), this._kA(o.g, 1, t, t, r, a), this._gH(o, t)
    },
    _gH: function (t, i) {
      var n = new d$(t, i);
      return this._kC[i] = n, this._kC[So] = i, n
    },
    hitTest: function (t, i, n) {
      return this._mQ == BF ? this._mO[Do][d](this._mO, arguments) : !(this[za] || this._lQ && this._lQ[za]) || (this._pixels || this._lQ[za])._j1(t, i, n)
    },
    _eG: function () {
      this[Ja] && this[Ja][Wi](new tB(this, Io, Lo, this._lQ))
    },
    _oA4: function (t, i) {
      this[Ja] && this[Ja].addListener(t, i)
    },
    _6Y: function (t, i) {
      this[Ja] && this[Ja][Qi](t, i)
    },
    _oBK: function (t) {
      this._kC = {}, (t || 1e5 < this[Ht] * this[Xt]) && (this._lQ = null, this._k9 = null)
    }
  }, GC(GF, WN);
  var HF = {};

  function XF(t, i, n, e) {
    if (i) return HF[t] = new GF(i, n, e), t;
    delete HF[t]
  }

  function WF(t) {
    if (t._lQ) return t._lQ;
    if (!vN(t) && !t.name) return t._lQ = new GF(t);
    var i = t[T] || t;
    return i in HF ? HF[i] : HF[i] = new GF(t)
  }

  function UF(t) {
    return t in HF
  }

  function YF(t, i, n) {
    n = n || {};
    var e = t[Ro](n[ma]);
    if (!e[Ht] || !e[Xt]) return !1;
    var s = i.getContext(Yr),
      h = i.ratio || 1,
      r = n[Po] || ko,
      a = /full/i [A](r),
      o = /uniform/i [A](r),
      f = 1,
      c = 1;
    if (a) {
      var u, _, l, d, v = i[Ht],
        b = i[Xt],
        y = n[Co],
        g = 0,
        E = 0;
      y && (dN(y) ? u = _ = l = d = y : (u = y.top || 0, _ = y[Ft] || 0, l = y[Jt] || 0, d = y[$t] || 0), v -= l + d, b -= u + _, g += l, E += u), f = v / e[Ht], c = b / e[Xt], o && (c < f ? (g += (v - c * e[Ht]) / 2, f = c) : f < c && (E += (b - f * e.height) / 2, c = f)), (g || E) && s[Aa](g, E)
    }
    s.translate(-e.x * f, -e.y * c), t.draw(s, h, n, f, c, !0)
  }

  function jF(t, i, n, e, s, h) {
    this[Mi] = t, this.colors = i, this.positions = n, this[$o] = e || 0, this.tx = s || 0, this.ty = h || 0
  }
  KB[vo] = function (t, i, n) {
    var e = WF(t);
    if (!e) return KB[Za](No + t), !1;
    e[Ya](), e._mQ != CF && !e._6X() || e._oA4(function (t) {
      t[pi] && (this[Ht] = this[Ht], YF(t[pi], this, n))
    }, i), YF(e, i, n)
  }, KB.registerImage = XF, KB[Bo] = UF, KB[Fo] = function () {
    var t = [];
    for (var i in HF) t.push(i);
    return t
  }, zB.GRADIENT_TYPE_RADIAL = hi, zB[Go] = si, jF[_] = {
    type: null,
    colors: null,
    positions: null,
    angle: null,
    tx: 0,
    ty: 0,
    position: YN[_i],
    isEmpty: function () {
      return null == this[Ho] || 0 == this[Ho].length
    },
    _7L: function () {
      var t = this[Ho][N];
      if (1 == t) return [0];
      for (var i = [], n = 1 / (t - 1), e = 0; e < t; e++) i.push(n * e);
      return this[Xo] || (this[Xo] = i), i
    },
    generatorGradient: function (t) {
      if (null == this[Ho] || 0 == this[Ho][N]) return null;
      var i, n = aF();
      if (this[Mi] == zB.GRADIENT_TYPE_LINEAR) {
        var e, s = this[$o];
        if (s > Math.PI && (s -= Math.PI), s <= Math.PI / 2) {
          var h = Math.atan2(t.height, t[Ht]),
            r = Math[Lt](t[Ht] * t[Ht] + t.height * t[Xt]),
            a = h - s;
          e = Math.cos(a) * r
        } else h = Math[Ct](t.width, t[Xt]), r = Math[Lt](t.width * t[Ht] + t.height * t[Xt]), a = h - (s - Math.PI / 2), e = Math.cos(a) * r;
        var o = e / 2,
          f = o * Math.cos(s),
          c = o * Math.sin(s),
          u = t.x + t[Ht] / 2 - f,
          _ = t.y + t[Xt] / 2 - c,
          l = t.x + t[Ht] / 2 + f,
          d = t.y + t[Xt] / 2 + c;
        i = n[Wo](u, _, l, d)
      } else {
        if (!(this[Mi] = zB[Uo])) return null;
        var v = JN(this[Yo], t.width, t.height);
        v.x += t.x, v.y += t.y, this.tx && (Math.abs(this.tx) < 1 ? v.x += t[Ht] * this.tx : v.x += this.tx), this.ty && (Math.abs(this.ty) < 1 ? v.y += t.height * this.ty : v.y += this.ty);
        var b = RN(v.x, v.y, t.x, t.y);
        b = Math.max(b, RN(v.x, v.y, t.x, t.y + t[Xt])), b = Math.max(b, RN(v.x, v.y, t.x + t[Ht], t.y + t.height)), b = Math.max(b, RN(v.x, v.y, t.x + t.width, t.y)), i = n[jo](v.x, v.y, 0, v.x, v.y, b)
      }
      var y = this.colors,
        g = this[Xo];
      g && g[N] == y[N] || (g = this._7L());
      for (var E = 0, x = y.length; E < x; E++) i[Zo](g[E], y[E]);
      return i
    }
  };
  var ZF = new jF(zB[Go], [MN(2332033023), MN(1154272460), MN(1154272460), MN(1442840575)], [.1, .3, .7, .9], Math.PI / 2),
    QF = new jF(zB[Go], [MN(2332033023), MN(1154272460), MN(1154272460), MN(1442840575)], [.1, .3, .7, .9], 0),
    VF = (new jF(zB.GRADIENT_TYPE_LINEAR, [MN(1154272460), MN(1442840575)], [.1, .9], 0), new jF(zB.GRADIENT_TYPE_RADIAL, [MN(2298478591), MN(1156509422), MN(1720223880), MN(1147561574)], [.1, .3, .7, .9], 0, -.3, -.3)),
    KF = [MN(0), MN(4294901760), MN(4294967040), MN(4278255360), MN(4278250239), MN(4278190992), MN(4294901958), MN(0)],
    zF = [0, .12, .28, .45, .6, .75, .8, 1],
    JF = new jF(zB[Go], KF, zF),
    qF = new jF(zB.GRADIENT_TYPE_LINEAR, KF, zF, Math.PI / 2),
    t$ = new jF(zB[Uo], KF, zF);
  jF[Qo] = ZF, jF[Vo] = QF, jF.RADIAL_GRADIENT = VF, jF[Ko] = JF, jF.RAINBOW_LINEAR_GRADIENT_VERTICAL = qF, jF.RAINBOW_RADIAL_GRADIENT = t$;
  var i$ = fi,
    n$ = si,
    e$ = zo,
    s$ = ui,
    h$ = Jo,
    r$ = qo;
  zB.SEGMENT_MOVE_TO = i$, zB[tf] = n$, zB[nf] = e$, zB[ef] = s$, zB[sf] = h$, zB.SEGMENT_CLOSE = r$;

  function a$(t, i) {
    this.id = ++QC, bN(t) ? this[ps] = t : (this[Mi] = t, this[ps] = i)
  }
  TN(a$[_] = {
    toJSON: function () {
      var t = {
        type: this.type,
        points: this[ps]
      };
      return this.invalidTerminal && (t[hf] = !0), t
    },
    parseJSON: function (t) {
      this[Mi] = t[Mi], this.points = t[ps], this[hf] = t.invalidTerminal
    },
    points: null,
    type: n$,
    clone: function () {
      return new a$(this.type, this[ps] ? NC(this[ps]) : null)
    },
    move: function (t, i) {
      if (this[ps])
        for (var n = 0, e = this.points.length; n < e; n++) {
          var s = this[ps][n];
          KB.isNumber(s) && (this[ps][n] += n % 2 == 0 ? t : i)
        }
    }
  }, {
    lastPoint: {
      get: function () {
        return this[Mi] == h$ ? {
          x: this._p2x,
          y: this[aa]
        } : {
          x: this[ps][this.points[N] - 2],
          y: this.points[this[ps][N] - 1]
        }
      }
    },
    firstPoint: {
      get: function () {
        return {
          x: this.points[0],
          y: this[ps][1]
        }
      }
    }
  }), KB[rf] = a$;
  IN[af] = Rr;
  var o$ = function (t) {
    this[ of ] = new WN, this._hD = t || []
  };

  function f$(t, i, n) {
    return {
      x: t.x + (i.x - t.x) * n,
      y: t.y + (i.y - t.y) * n
    }
  }

  function c$(t, i, n, e, s) {
    e = e || IN.ADD_SEGMENT_TYPE;
    var h = function (t, i, n, e) {
      var s = t[N];
      if (s && !(s < 0)) {
        e = e || 1;
        for (var h, r, a = 0; a++ < s;)
          if ((h = t[ff](a, 0)) && !(e < (r = RN(i, n, h.x, h.y)))) {
            for (var o = 0; o++ < e;)
              if (h = t[ff](a + o, 0)) {
                var f = RN(i, n, h.x, h.y);
                if (r <= f) {
                  a += o;
                  break
                }
                r = f
              } for (var c = a, u = t[N] - 1, _ = 0, l = (a = 0, t._hD[N]); a < l; a++)
              if (c < (_ += t._hD[a]._l2 || 0)) {
                u = a;
                break
              } return h[N] = c, h.index = u, h
          }
      }
    }(t, i, n, s);
    if (h) {
      i = h.x, n = h.y;
      var r = t._hD,
        a = h[Ki],
        o = a == r[N] - 1,
        f = r[a],
        c = r[L](0);
      if (f[Mi] == n$ || f[Mi] == r$)
        if (cf == e) c[M](a, 0, new a$(n$, [h.x, h.y]));
        else {
          var u = r[a - 1][ha],
            _ = f[sa],
            l = f$(u, h, v = RN(u.x, u.y, i, n) / RN(u.x, u.y, _.x, _.y)),
            d = f$(h, _, v);
          c[M](a, 1, new a$(e$, [l.x, l.y, i, n]), new a$(e$, f[hf] ? [d.x, d.y] : [d.x, d.y, _.x, _.y]))
        }
      else if (ri in h && cf != e) {
        var v = h.t;
        if (f[Mi] == s$) {
          u = r[a - 1][ha], _ = {
            x: f[ps][0],
            y: f[ps][1]
          };
          var b = {
              x: f[ps][2],
              y: f[ps][3]
            },
            y = {
              x: f.points[4],
              y: f[ps][5]
            },
            g = (l = f$(u, _, v), d = f$(_, b, v), f$(b, y, v)),
            E = f$(l, d, v),
            x = f$(d, g, v);
          c[M](a, 1, new a$(s$, [l.x, l.y, E.x, E.y, i, n]), new a$(s$, f.invalidTerminal ? [x.x, x.y, g.x, g.y] : [x.x, x.y, g.x, g.y, y.x, y.y]))
        } else f[Mi] == e$ && (u = r[a - 1][ha], _ = {
          x: f[ps][0],
          y: f[ps][1]
        }, b = {
          x: f[ps][2],
          y: f[ps][3]
        }, l = f$(u, _, v), d = f$(_, b, v), c.splice(a, 1, new a$(e$, [l.x, l.y, i, n]), new a$(e$, f.invalidTerminal ? [d.x, d.y] : [d.x, d.y, b.x, b.y])))
      } else {
        _ = f.lastPoint;
        c[M](a, 1, new a$(n$, [i, n]), new a$(n$, [_.x, _.y]))
      }
      return {
        atEnd: o,
        index: a,
        isCurve: cf !== e,
        segments: c
      }
    }
  }

  function u$(t, i, n) {
    this._$z(t, i, n)
  }

  function _$(t, i, n) {
    return new u$(t, i, n)
  }

  function l$(t, i, n) {
    return (n = n || IN[uf]) == zB[_f] ? t * i : n == zB[lf] ? Math.min(t, i) : n == zB[df] ? 1 - (1 - i) / t : n == zB.BLEND_MODE_LINEAR_BURN ? t + i - 1 : n == zB[vf] ? Math.max(t, i) : n == zB.BLEND_MODE_SCREEN ? t + i - t * i : i
  }
  o$.prototype = {
    toJSON: function () {
      var i = [];
      return this._hD.forEach(function (t) {
        i[D](t[bf]())
      }), i
    },
    parseJSON: function (t) {
      var i = this._hD;
      t[At](function (t) {
        i.push(new a$(t.type, t[ps]))
      })
    },
    clear: function () {
      this._hD[N] = 0, this.bounds[Ot](), this._l2 = 0, this._6W = !0
    },
    _f3: !0,
    _7N: function (t, i) {
      this._f3 && 0 === this._hD.length && t != i$ && this._hD.push(new a$(i$, [0, 0])), this._hD[D](new a$(t, i)), this._6W = !0
    },
    add: function (t, i) {
      BC(this._hD, t, i), this._6W = !0
    },
    removePathSegment: function (t) {
      if (t >= this._hD[N]) return !1;
      this._hD.splice(t, 1), this._6W = !0
    },
    moveTo: function (t, i) {
      this._7N(i$, [t, i])
    },
    lineTo: function (t, i) {
      this._7N(n$, [t, i])
    },
    quadTo: function (t, i, n, e) {
      this._7N(e$, [t, i, n, e])
    },
    curveTo: function (t, i, n, e, s, h) {
      this._7N(s$, [t, i, n, e, s, h])
    },
    arcTo: function (t, i, n, e, s) {
      this._7N(h$, [t, i, n, e, s])
    },
    closePath: function () {
      this._7N(r$)
    },
    _8R: function (t, i, n, e, s) {
      if (e.selectionColor) {
        if (n == zB[Br]) {
          if (!e[yf]) return;
          return t[xo] = e.selectionColor, t[mo] = e.selectionShadowBlur * i, t[po] = (e[gf] || 0) * i, void(t[Mo] = (e.selectionShadowOffsetY || 0) * i)
        }
        if (n == zB[Ef]) {
          if (!e.selectionBorder) return;
          t[pa] = e[xf];
          var h = s[ma] || 0;
          s[mf] && (h += 2 * s[mf]), t[ma] = e.selectionBorder + h, this._n5(t), t[ka]()
        }
      }
    },
    _6W: !0,
    _hD: null,
    _l2: 0,
    lineCap: wr,
    lineJoin: Vh,
    draw: function (t, i, n, e, s) {
      t.lineCap = n[pf] || this[pf], t[Mf] = n[Mf] || this[Mf], e && (s = s || n, this._8R(t, i, s.selectionType, s, n));
      var h = e && s[wf] == zB[Br];
      n[Tf] && (this._n5(t), t.lineWidth = n.lineWidth + 2 * (n[mf] || 0), t[pa] = n.outlineStyle, t.stroke(), h && (h = !1, t[xo] = Of)), t.lineWidth = 0, this._n5(t), n.fillColor && (t[Da] = n[Ha] || n[Af], t[La]()), n.fillGradient && (t.fillStyle = n[Sf] || n[Df], t[La]()), n.lineWidth && (t[ma] = n[ma], n[If] && (n[Lf] && (t[pa] = n[Lf], t[ka](), h && (t[xo] = Of)), t[pf] = n[Rf] || t[pf], t[Mf] = n[Pf] || t[Mf], t[If] = n.lineDash, t.lineDashOffset = n[kf]), t.strokeStyle = n[Ha] || n[pa], t[ka](), t[If] = [])
    },
    _n5: function (t) {
      var i, n;
      t.beginPath();
      for (var e = 0, s = this._hD.length; e < s; e++) i = this._hD[e], DF._n5(t, i, n), n = i
    },
    invalidate: function () {
      this._6W = !0
    },
    validate: function () {
      if (this._6W = !1, this[ of ][Ot](), (this._l2 = 0) != this._hD[N])
        for (var t, i, n = this._hD, e = 1, s = n[0], h = s, r = n.length; e < r; e++)(t = n[e])[Mi] == i$ ? h = t : (DF._66(this[ of ], t, s, h), i = DF._67(t, s, h), t._l2 = i, this._l2 += i), s = t
    },
    getBounds: function (t, i) {
      if (this._6W && this[Ya](), i = i || new WN, t) {
        var n = t / 2;
        i.set(this[ of ].x - n, this.bounds.y - n, this[ of ].width + t, this[ of ][Xt] + t)
      } else i.set(this[ of ].x, this.bounds.y, this[ of ][Ht], this[ of ][Xt]);
      return i
    },
    hitTest: function (t, i, n, e, s, h) {
      return function (t, i, n, e, s, h) {
        if (n = n || 0, !(s = s || 0) && !h) return !1;
        if (!e && !this.getBounds(s)[Vt](t, i, n)) return !1;
        var r = Math[Vh](2 * n) || 1,
          a = aF(r, r),
          o = (a[Ur], -t + n),
          f = -i + n;
        if (a.setTransform(1, 0, 0, 1, o, f), a[Cf]) return a.lineWidth = (s || 0) + 2 * n, this._n5(a), !(!s || !a.isPointInStroke(n, n)) || !!h && a[Nf](n, n);
        this._n5(a), s && a[ka](), h && a.fill();
        var c = cF(a, 0, 0, r, r);
        if (!c) return !1;
        for (var u = (c = c[bn])[N] / 4; 0 < u;) {
          if (0 < c[4 * u - 1]) return !0;
          --u
        }
        return !1
      } [m](this, t, i, n, e, s, h)
    },
    toSegments: function () {
      return [][B](this._hD)
    },
    generator: function (t, i, n, e, s) {
      return function (t, i, n, e, s) {
        this._6W && this.validate();
        var h = s ? this[Ro](s) : this[ of ],
          o = n / h[Ht],
          f = t - o * h.x,
          c = e / h[Xt],
          u = i - c * h.y,
          r = this._hD,
          _ = [];
        return PC(r, function (t) {
          var i = t[l](),
            n = i[ps];
          if (n && n[N]) {
            for (var e = n.length, s = [], h = 0; h < e; h++) {
              var r = n[h],
                a = n[++h];
              r = o * r + f, a = c * a + u, s[D](r), s[D](a)
            }
            i[ps] = s
          }
          _[D](i)
        }, this), new o$(_)
      } [m](this, t, i, n, e, s)
    },
    getLocation: function (t, i) {
      return TF[m](this, t, i || 0)
    }
  }, TN(o$.prototype, {
    segments: {
      get: function () {
        return this._hD
      },
      set: function (t) {
        this[Ot](), this._hD = t
      }
    },
    length: {
      get: function () {
        return this._6W && this.validate(), this._l2
      }
    },
    _empty: {
      get: function () {
        return 0 == this._hD[N]
      }
    }
  }), u$[_] = {
    _$z: function (t, i, n) {
      var e, s, h, r, a, o = t.length,
        f = 0,
        c = 0;
      for (a = 0; a < o; a += 4)
        if (0 < t[a + 3]) {
          e = (a + 4) / i / 4 | 0;
          break
        } for (a = o - 4; 0 <= a; a -= 4)
        if (0 < t[a + 3]) {
          s = (a + 4) / i / 4 | 0;
          break
        } for (f = 0; f < i; f++) {
        for (c = e; c < s; c++)
          if (0 < t[c * i * 4 + 4 * f + 3]) {
            h = f;
            break
          } if (0 <= h) break
      }
      for (f = i - 1; 0 <= f; f--) {
        for (c = e; c < s; c++)
          if (0 < t[c * i * 4 + 4 * f + 3]) {
            r = f;
            break
          } if (0 <= r) break
      }
      this._x = h, this._y = e, this[go] = r - h + 1, this[Eo] = s - e + 1, this._kL = new WN(h, e, this._width, this[Eo]), this[Bf] = this[go] * this[Eo], this._originalPixelsWidth = i, this[Ff] = t
    },
    _eI: function (t, i) {
      return this[Ff][4 * (t + this._x + (this._y + i) * this._originalPixelsWidth) + 3]
    },
    _j1: function (t, i, n) {
      (!n || n <= 1) && (n = 1), n |= 0, t = Math.round(t - this._x) - n, i = Math.round(i - this._y) - n, n += n;
      for (var e = t, s = i; s < i + n;) {
        for (e = t; e < t + n;) {
          if (this._eI(e, s)) return !0;
          ++e
        }++s
      }
      return !1
    }
  }, zB[lf] = $f, zB.BLEND_MODE_MULTIPLY = Gf, zB[df] = Hf, zB.BLEND_MODE_LINEAR_BURN = Xf, zB[vf] = Wf, zB[Uf] = Yf, zB.BLEND_MODE_GRAY = jf, IN.BLEND_MODE = zB[Zf];
  var d$ = function (t, i, n) {
    this._k9 = t, this[wo] = i || 1, this._iZ = n
  };
  d$[_] = {
    scale: 1,
    _k9: null,
    _kC: null,
    _iZ: !0,
    _n5: function (t, i, n) {
      if ((i = i && function (t) {
          if (U == t[0]) {
            if (3 == (t = t[Un](1))[N]) t = t[0] + t[0] + t[1] + t[1] + t[2] + t[2];
            else if (6 != t[N]) return;
            return [(t = parseInt(t, 16)) >> 16 & 255, t >> 8 & 255, 255 & t]
          }
          if (/^rgb/i.test(t)) {
            var i = t.indexOf(Vf),
              n = t.indexOf(V);
            if (i < 0 || n < i) return;
            if ((t = (t = t[Un](i + 1, n))[k](Z)).length < 3) return;
            return [parseInt(t[0]), parseInt(t[1]), parseInt(t[2]), 3 == t.length ? 255 : parseInt(t[3])]
          }
          KB[Za]("color format error, [" + t + Kf)
        }(i)) && !1 !== this._iZ) {
        this._k9 instanceof Image && ((e = rF())[Ht] = this._k9[Ht], e[Xt] = this._k9[Xt], e.g[vo](this._k9, 0, 0, this._k9.width, this._k9[Xt]), this._k9 = e), this._kC || (this._kC = {});
        var e, s = i + n;
        if ((e = this._kC[s]) || ((e = function (t, i, n) {
            var e = cF(t.g, 0, 0, t[Ht], t.height);
            if (e) {
              var s = e.data;
              if (n instanceof Function) s = n(t, s, i) || s;
              else {
                var h = i[0] / 255,
                  r = i[1] / 255,
                  a = i[2] / 255;
                if (n == zB[zf])
                  for (var o = 0, f = s.length; o < f; o += 4) {
                    var c = 77 * s[o] + 151 * s[o + 1] + 28 * s[o + 2] >> 8;
                    s[o] = c * h | 0, s[o + 1] = c * r | 0, s[o + 2] = c * a | 0
                  } else
                    for (o = 0, f = s.length; o < f; o += 4) s[o] = 255 * l$(h, s[o] / 255, n) | 0, s[o + 1] = 255 * l$(r, s[o + 1] / 255, n) | 0, s[o + 2] = 255 * l$(a, s[o + 2] / 255, n) | 0
              }
              return (t = rF(t[Ht], t[Xt])).g[_o](e, 0, 0), t
            }
          }(this._k9, i, n)) || (this._iZ = !1), this._kC[s] = e || this._k9), e)
          if (zC) try {
            t[vo](e, 0, 0)
          } catch (t) {} else t[vo](e, 0, 0)
      } else t.drawImage(this._k9, 0, 0)
    }
  };

  function v$(t, i, n, e, s, h, r, a, o) {
    this._mU = function (t, i, n, e, s, h, r, a, o) {
      if (HN(t, i, n, e, a, o)) return null;
      var f, c, u = new a$(n$, [t + n - s, i]),
        _ = new a$(e$, [t + n, i, t + n, i + h]),
        l = new a$(n$, [t + n, i + e - h]),
        d = new a$(e$, [t + n, i + e, t + n - s, i + e]),
        v = new a$(n$, [t + s, i + e]),
        b = new a$(e$, [t, i + e, t, i + e - h]),
        y = new a$(n$, [t, i + h]),
        g = new a$(e$, [t, i, t + s, i]),
        E = (new a$(r$), [u, _, l, d, v, b, y, g]),
        x = new WN(t + s, i + h, n - s - s, e - h - h);
      c = a < t ? (f = jN, 5) : t + n < a ? (f = ZN, 1) : (f = ui, 0), o < i ? f == jN && (c = 7) : i + e < o ? f == ZN ? c = 3 : ui == f && (c = 4) : f == jN ? c = 6 : f == ZN && (c = 2);
      var m = function (t, i, n, e, s, h, r, a, o, f, c) {
          var u = a / 2;
          switch (h = h || 1e-4, r = r || 1e-4, t) {
            case 7:
              var _ = [i, n + r, i, n, i + h, n],
                l = i + h,
                d = n + r;
              return b$(t, _, l, d, i, n, e, s, h, r, a, o, f, c);
            case 5:
              return b$(t, _ = [i + h, n + s, i, n + s, i, n + s - r], l = i + h, d = n + s - r, i, n, e, s, h, r, a, o, f, c);
            case 3:
              return b$(t, _ = [i + e, n + s - r, i + e, n + s, i + e - h, n + s], l = i + e - h, d = n + s - r, i, n, e, s, h, r, a, o, f, c);
            case 1:
              return b$(t, _ = [i + e - h, n, i + e, n, i + e, n + r], l = i + e - h, d = n + r, i, n, e, s, h, r, a, o, f, c);
            case 0:
              return function (t, i, n, e, s, h, r, a) {
                var o, f;
                if (t + e <= r - h) o = {
                  y: i,
                  x: r - h,
                  _mUNO: 0
                };
                else {
                  o = {
                    y: i + s,
                    x: Math.max(t, r - h)
                  };
                  var c = [t, i + s, t, i, t + e, i],
                    u = new NN(r, a, o.x, o.y);
                  (o = u._$e(c)) ? (bN(o) && (o = o[0].t > o[1].t ? o[0] : o[1]), (_ = (_ = y$(c, [o]))[0]) && (o._mU = new a$(e$, _[L](2))), o[Jf] = 7) : o = {
                    y: i,
                    x: t + e,
                    _mUNO: 0
                  }
                }
                if (r + h <= t + n - e) f = {
                  y: i,
                  x: r + h,
                  _mUNO: 0
                };
                else {
                  f = {
                    y: i + s,
                    x: Math.min(t + n, r + h)
                  };
                  var _, l = [t + n - e, i, t + n, i, t + n, i + s];
                  (f = (u = new NN(r, a, f.x, f.y))._$e(l)) ? (bN(f) && (f = f[0].t < f[1].t ? f[0] : f[1]), (_ = y$(l, [f])) && _[_.length - 1] && (f._mU = new a$(e$, _[_[N] - 1][L](2))), f._mUNO = 1) : f = {
                    y: i,
                    x: t + n - e,
                    _mUNO: 0
                  }
                }
                return [o, f]
              }(i, n, e, h, r, u, o, f);
            case 2:
              return function (t, i, n, e, s, h, r, a, o) {
                var f, c;
                if (i + h <= o - r) f = {
                  x: t + n,
                  y: o - r,
                  _mUNO: 2
                };
                else {
                  f = {
                    x: t + n - s,
                    y: Math.max(i, o - r)
                  };
                  var u = [t + n - s, i, t + n, i, t + n, i + h],
                    _ = new NN(a, o, f.x, f.y);
                  (f = _._$e(u)) ? (bN(f) && (f = f[0].t > f[1].t ? f[0] : f[1]), (l = (l = y$(u, [f]))[0]) && (f._mU = new a$(e$, l[L](2))), f[Jf] = 1) : f = {
                    x: t + n,
                    y: i + h,
                    _mUNO: 2
                  }
                }
                if (o + r <= i + e - h) c = {
                  x: t + n,
                  y: o + r,
                  _mUNO: 2
                };
                else {
                  c = {
                    x: t + n - s,
                    y: Math.min(i + e, o + r)
                  };
                  var l, d = [t + n, i + e - h, t + n, i + e, t + n - s, i + e];
                  (c = (_ = new NN(a, o, c.x, c.y))._$e(d)) ? (bN(c) && (c = c[0].t < c[1].t ? c[0] : c[1]), (l = y$(d, [c]))[1] && (c._mU = new a$(e$, l[1].slice(2))), c._mUNO = 3) : c = {
                    x: t + n,
                    y: i + e - h,
                    _mUNO: 2
                  }
                }
                return [f, c]
              }(i, n, e, s, h, r, u, o, f);
            case 4:
              return function (t, i, n, e, s, h, r, a, o) {
                var f, c;
                if (t + s <= a - r) c = {
                  y: i + e,
                  x: a - r,
                  _mUNO: 4
                };
                else {
                  c = {
                    y: i + e - h,
                    x: Math.max(t, a - r)
                  };
                  var u = [t + s, i + e, t, i + e, t, i + e - h],
                    _ = new NN(a, o, c.x, c.y);
                  (c = _._$e(u)) ? (bN(c) && (c = c[0].t < c[1].t ? c[0] : c[1]), (l = (l = y$(u, [c]))[l[N] - 1]) && (c._mU = new a$(e$, l[L](2))), c[Jf] = 5) : c = {
                    y: i + e,
                    x: t + s,
                    _mUNO: 4
                  }
                }
                if (a + r <= t + n - s) f = {
                  y: i + e,
                  x: a + r,
                  _mUNO: 4
                };
                else {
                  f = {
                    y: i + e - h,
                    x: Math.min(t + n, a + r)
                  };
                  var l, d = [t + n, i + e - h, t + n, i + e, t + n - s, i + e];
                  (f = (_ = new NN(a, o, f.x, f.y))._$e(d)) ? (bN(f) && (f = f[0].t > f[1].t ? f[0] : f[1]), (l = y$(d, [f]))[0] && (f._mU = new a$(e$, l[0].slice(2))), f[Jf] = 3) : f = {
                    y: i + e,
                    x: t + n - s,
                    _mUNO: 4
                  }
                }
                return [f, c]
              }(i, n, e, s, h, r, u, o, f);
            case 6:
              return function (t, i, n, e, s, h, r, a) {
                var o, f;
                if (i + s <= a - h) f = {
                  x: t,
                  y: a - h,
                  _mUNO: 6
                };
                else {
                  f = {
                    x: t + e,
                    y: Math.max(i, a - h)
                  };
                  var c = [t, i + s, t, i, t + e, i],
                    u = new NN(r, a, f.x, f.y);
                  (f = u._$e(c)) ? (bN(f) && (f = f[0].t < f[1].t ? f[0] : f[1]), (_ = (_ = y$(c, [f]))[_.length - 1]) && (f._mU = new a$(e$, _[L](2)))) : f = {
                    x: t,
                    y: i + s
                  }, f[Jf] = 7
                }
                if (a + h <= i + n - s) o = {
                  x: t,
                  y: a + h,
                  _mUNO: 6
                };
                else {
                  o = {
                    x: t + e,
                    y: Math.min(i + n, a + h)
                  };
                  var _, l = [t + e, i + n, t, i + n, t, i + n - s];
                  (o = (u = new NN(r, a, o.x, o.y))._$e(l)) ? (bN(o) && (o = o[0].t > o[1].t ? o[0] : o[1]), (_ = y$(l, [o]))[0] && (o._mU = new a$(e$, _[0][L](2))), o[Jf] = 5) : o = {
                    x: t,
                    y: i + n - s,
                    _mUNO: 6
                  }
                }
                return [o, f]
              }(i, n, s, h, r, u, o, f)
          }
        }(c, t, i, n, e, s, h, r, a, o, x),
        p = m[0],
        M = m[1],
        w = new o$,
        T = w._hD;
      T.push(new a$(i$, [p.x, p.y])), T[D](new a$(n$, [a, o])), T[D](new a$(n$, [M.x, M.y])), M._mU && (T[D](M._mU), M[Jf]++);
      for (var O = M._mUNO % 8, A = p[Jf]; T[D](E[O]), ++O, (O %= 8) != A;);
      return p._mU && T[D](p._mU), w[va](), w
    }(t, i, n, e, s, h, r, a, o)
  }

  function b$(t, i, n, e, s, h, r, a, o, f, c, u, _, l) {
    var d = new NN(u, _, n, e),
      v = new NN(i[0], i[1], i[4], i[5])._3N(d, c),
      b = v[0],
      y = v[1];
    if (b._rest !== I) {
      b._mUNO = (t - 1) % 8, y[Jf] = (t + 1) % 8;
      var g = b[Gt];
      7 == t ? (b.y = h + f + Math.min(l.height, g), y.x = s + o + Math.min(l[Ht], g)) : 5 == t ? (b.x = s + o + Math.min(l[Ht], g), y.y = h + a - f - Math.min(l[Xt], g)) : 3 == t ? (b.y = h + a - f - Math.min(l[Xt], g), y.x = s + r - o - Math.min(l[Ht], g)) : 1 == t && (b.x = s + r - o - Math.min(l.width, g), y.y = h + f + Math.min(l.height, g))
    } else {
      d._nX(d._o2, d._o4, b.x, b.y), b = d._$e(i), d._nX(d._o2, d._o4, y.x, y.y);
      var E = y$(i, [b, y = d._$e(i)]),
        x = E[0],
        m = E[2];
      b[Jf] = t, y[Jf] = t, b._mU = new a$(e$, x[L](2)), y._mU = new a$(e$, m[L](2))
    }
    return [b, y]
  }

  function y$(t, i) {
    for (var n, e, s, h, r, a, o = t[0], f = t[1], c = t[2], u = t[3], _ = t[4], l = t[5], d = [], v = 0; v < i[N]; v++) 0 != (a = (r = i[v]).t) && 1 != a ? (n = o + (c - o) * a, e = f + (u - f) * a, s = c + (_ - c) * a, h = u + (l - u) * a, d.push([o, f, n, e, r.x, r.y]), o = r.x, f = r.y, c = s, u = h) : d.push(null);
    return s !== I && d[D]([r.x, r.y, s, h, _, l]), d
  }
  var g$ = {
    server: {
      draw: function (t) {
        t[Ta](), t[Aa](0, 0), t[Ca](), t[Ra](0, 0), t[_a](40, 0), t.lineTo(40, 40), t[_a](0, 40), t.closePath(), t[Sa](), t[Aa](0, 0), t[Aa](0, 0), t[wo](1, 1), t.translate(0, 0), t[pa] = Of, t[pf] = wr, t[Mf] = Ir, t[qf] = 4, t.save(), t.save(), t[Ba](), t[Ta](), t.restore(), t[Ta](), t[Ba](), t.save(), t.restore(), t.save(), t[Ba](), t[Ta](), t.restore(), t[Ta](), t.restore(), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t.restore(), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t.restore(), t[Ta]();
        var i = t[Wo](6.75, 3.9033, 30.5914, 27.7447);
        i[Zo](.0493, tc), i.addColorStop(.0689, ic), i[Zo](.0939, nc), i.addColorStop(.129, ec), i.addColorStop(.2266, sc), i[Zo](.2556, hc), i[Zo](.2869, rc), i.addColorStop(.3194, ac), i.addColorStop(.3525, oc), i.addColorStop(.3695, fc), i[Zo](.5025, cc), i.addColorStop(.9212, uc), i[Zo](1, _c), t[Da] = i, t[Ca](), t[Ra](25.677, 4.113), t.bezierCurveTo(25.361, 2.4410000000000007, 23.364, 2.7940000000000005, 22.14, 2.7990000000000004), t[da](19.261, 2.813, 16.381, 2.8260000000000005, 13.502, 2.8400000000000003), t.bezierCurveTo(12.185, 2.846, 10.699000000000002, 2.652, 9.393, 2.8790000000000004), t[da](9.19, 2.897, 8.977, 2.989, 8.805, 3.094), t[da](8.084999999999999, 3.5109999999999997, 7.436999999999999, 4.1259999999999994, 6.776, 4.63), t.bezierCurveTo(5.718999999999999, 5.436, 4.641, 6.22, 3.6029999999999998, 7.05), t[da](4.207, 6.5889999999999995, 21.601999999999997, 36.579, 21.028, 37.307), t[da](22.019, 36.063, 23.009999999999998, 34.819, 24.000999999999998, 33.575), t[da](24.587999999999997, 32.84, 25.589999999999996, 31.995000000000005, 25.593999999999998, 30.983000000000004), t[da](25.595999999999997, 30.489000000000004, 25.598, 29.994000000000003, 25.601, 29.500000000000004), t.bezierCurveTo(25.612, 26.950000000000003, 25.622, 24.400000000000006, 25.633, 21.85), t.bezierCurveTo(25.657, 16.318, 25.680999999999997, 10.786000000000001, 25.704, 5.253), t[da](25.706, 4.885, 25.749, 4.478, 25.677, 4.113), t.bezierCurveTo(25.67, 4.077, 25.697, 4.217, 25.677, 4.113), t[va](), t[La](), t[ka](), t[Ba](), t[Ta](), t[Ta](), t[Da] = lc, t.beginPath(), t[Ra](19.763, 6.645), t.bezierCurveTo(20.002000000000002, 6.643999999999999, 20.23, 6.691999999999999, 20.437, 6.778), t[da](20.644000000000002, 6.864999999999999, 20.830000000000002, 6.991, 20.985, 7.146999999999999), t[da](21.14, 7.302999999999999, 21.266, 7.488999999999999, 21.352999999999998, 7.696999999999999), t[da](21.438999999999997, 7.903999999999999, 21.487, 8.133, 21.487, 8.372), t[_a](21.398, 36.253), t[da](21.397, 36.489, 21.349, 36.713, 21.262, 36.917), t[da](21.174, 37.121, 21.048000000000002, 37.305, 20.893, 37.458), t.bezierCurveTo(20.738, 37.611, 20.553, 37.734, 20.348, 37.818999999999996), t[da](20.141, 37.903999999999996, 19.916, 37.95099999999999, 19.679, 37.949), t[_a](4.675, 37.877), t[da](4.4399999999999995, 37.876000000000005, 4.216, 37.827000000000005, 4.012, 37.741), t.bezierCurveTo(3.8089999999999997, 37.653999999999996, 3.6249999999999996, 37.528999999999996, 3.4719999999999995, 37.376), t.bezierCurveTo(3.3179999999999996, 37.221, 3.1939999999999995, 37.037, 3.1079999999999997, 36.833999999999996), t[da](3.022, 36.629999999999995, 2.9739999999999998, 36.406, 2.9739999999999998, 36.172), t[_a](2.924, 8.431), t.bezierCurveTo(2.923, 8.192, 2.971, 7.964, 3.057, 7.758), t[da](3.143, 7.552, 3.267, 7.365, 3.4219999999999997, 7.209), t.bezierCurveTo(3.5769999999999995, 7.052999999999999, 3.76, 6.925, 3.965, 6.837), t[da](4.17, 6.749, 4.396, 6.701, 4.633, 6.7), t[_a](19.763, 6.645), t.closePath(), t.fill(), t.stroke(), t[Ba](), t[Ba](), t[Ta](), t.fillStyle = dc, t[Ca](), t.arc(12.208, 26.543, 2.208, 0, 6.283185307179586, !0), t[va](), t[La](), t[ka](), t[Ba](), t[Ta](), t[Da] = lc, t[Ca](), t.arc(12.208, 26.543, 1.876, 0, 6.283185307179586, !0), t[va](), t[La](), t[ka](), t.restore(), t[Ta](), t[Da] = dc, t[Ca](), t[Ra](19.377, 17.247), t[da](19.377, 17.724, 18.991999999999997, 18.108999999999998, 18.516, 18.108999999999998), t.lineTo(5.882, 18.108999999999998), t[da](5.404999999999999, 18.108999999999998, 5.02, 17.723, 5.02, 17.247), t.lineTo(5.02, 11.144), t.bezierCurveTo(5.02, 10.666, 5.406, 10.281, 5.882, 10.281), t[_a](18.516, 10.281), t[da](18.993, 10.281, 19.377, 10.666, 19.377, 11.144), t.lineTo(19.377, 17.247), t.closePath(), t[La](), t.stroke(), t[Ba](), t[Ta](), t.save(), t[Da] = lc, t[Ca](), t[Ra](18.536, 13.176), t[da](18.536, 13.518, 18.261000000000003, 13.794, 17.919, 13.794), t[_a](6.479, 13.794), t[da](6.1370000000000005, 13.794, 5.861, 13.518, 5.861, 13.176), t[_a](5.861, 11.84), t[da](5.861, 11.498, 6.137, 11.221, 6.479, 11.221), t[_a](17.918, 11.221), t[da](18.259999999999998, 11.221, 18.535, 11.497, 18.535, 11.84), t.lineTo(18.535, 13.176), t[va](), t[La](), t[ka](), t.restore(), t[Ta](), t.fillStyle = lc, t[Ca](), t[Ra](18.536, 16.551), t[da](18.536, 16.892999999999997, 18.261000000000003, 17.168999999999997, 17.919, 17.168999999999997), t[_a](6.479, 17.168999999999997), t[da](6.1370000000000005, 17.168999999999997, 5.861, 16.892999999999997, 5.861, 16.551), t.lineTo(5.861, 15.215999999999998), t[da](5.861, 14.872999999999998, 6.137, 14.596999999999998, 6.479, 14.596999999999998), t[_a](17.918, 14.596999999999998), t[da](18.259999999999998, 14.596999999999998, 18.535, 14.872999999999998, 18.535, 15.215999999999998), t[_a](18.535, 16.551), t[va](), t[La](), t[ka](), t[Ba](), t[Ba](), t[Ba]()
      }
    },
    exchanger2: {
      draw: function (t) {
        t[Ta](), t[Aa](0, 0), t[Ca](), t[Ra](0, 0), t.lineTo(40, 0), t[_a](40, 40), t[_a](0, 40), t.closePath(), t[Sa](), t.translate(0, 0), t[Aa](0, 0), t.scale(1, 1), t[Aa](0, 0), t[pa] = Of, t.lineCap = wr, t.lineJoin = Ir, t[qf] = 4, t[Ta](), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t.save(), t[Ba](), t.save(), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t.save(), t.restore(), t[Ta](), t.restore(), t[Ba](), t[Ta]();
        var i = t[Wo](.4102, 24.3613, 39.5898, 24.3613);
        i[Zo](0, tc), i[Zo](.0788, sc), i[Zo](.2046, vc), i.addColorStop(.3649, bc), i[Zo](.5432, yc), i[Zo](.6798, gc), i[Zo](.7462, Ec), i[Zo](.8508, xc), i.addColorStop(.98, hc), i[Zo](1, mc), t[Da] = i, t.beginPath(), t.moveTo(.41, 16.649), t.bezierCurveTo(.633, 19.767, .871, 20.689, 1.094, 23.807000000000002), t[da](1.29, 26.548000000000002, 3.324, 28.415000000000003, 5.807, 29.711000000000002), t[da](10.582, 32.202000000000005, 16.477, 32.806000000000004, 21.875999999999998, 32.523), t.bezierCurveTo(26.929, 32.258, 32.806, 31.197000000000003, 36.709999999999994, 27.992000000000004), t[da](38.30499999999999, 26.728000000000005, 38.83599999999999, 25.103000000000005, 38.998999999999995, 23.161000000000005), t[da](39.589, 16.135000000000005, 39.589, 16.135000000000005, 39.589, 16.135000000000005), t[da](39.589, 16.135000000000005, 3.26, 16.647, .41, 16.649), t[va](), t[La](), t.stroke(), t[Ba](), t[Ta](), t.save(), t[Da] = lc, t.beginPath(), t[Ra](16.4, 25.185), t[da](12.807999999999998, 24.924999999999997, 9.139, 24.238, 5.857999999999999, 22.705), t.bezierCurveTo(3.175999999999999, 21.450999999999997, -.32200000000000095, 18.971999999999998, .544999999999999, 15.533999999999999), t[da](1.3499999999999992, 12.335999999999999, 4.987999999999999, 10.495999999999999, 7.807999999999999, 9.428999999999998), t[da](11.230999999999998, 8.133999999999999, 14.911999999999999, 7.519999999999999, 18.558, 7.345999999999998), t[da](22.233, 7.169999999999998, 25.966, 7.437999999999998, 29.548000000000002, 8.300999999999998), t.bezierCurveTo(32.673, 9.052999999999999, 36.192, 10.296, 38.343, 12.814999999999998), t.bezierCurveTo(40.86600000000001, 15.768999999999998, 39.208000000000006, 19.066999999999997, 36.406000000000006, 21.043999999999997), t.bezierCurveTo(33.566, 23.046999999999997, 30.055000000000007, 24.071999999999996, 26.670000000000005, 24.676999999999996), t.bezierCurveTo(23.289, 25.28, 19.824, 25.436, 16.4, 25.185), t[da](13.529, 24.977, 19.286, 25.396, 16.4, 25.185), t[va](), t[La](), t[ka](), t.restore(), t.restore(), t[Ta](), t[Ta](), t[Ta](), t[Ta](), t[Ta](), t[Da] = pc, t[Ca](), t[Ra](5.21, 21.754), t.lineTo(8.188, 17.922), t.lineTo(9.53, 18.75), t[_a](15.956, 16.004), t[_a](18.547, 17.523), t[_a](12.074, 20.334), t.lineTo(13.464, 21.204), t[_a](5.21, 21.754), t[va](), t[La](), t[ka](), t[Ba](), t.restore(), t.restore(), t.save(), t[Ta](), t[Ta](), t.fillStyle = pc, t[Ca](), t.moveTo(17.88, 14.61), t[_a](9.85, 13.522), t[_a](11.703, 12.757), t.lineTo(7.436, 10.285), t[_a](10.783, 8.942), t[_a](15.091, 11.357), t[_a](16.88, 10.614), t.lineTo(17.88, 14.61), t.closePath(), t[La](), t[ka](), t[Ba](), t.restore(), t[Ta](), t[Ta](), t[Da] = pc, t.beginPath(), t[Ra](17.88, 14.61), t.lineTo(9.85, 13.522), t[_a](11.703, 12.757), t[_a](7.436, 10.285), t[_a](10.783, 8.942), t.lineTo(15.091, 11.357), t[_a](16.88, 10.614), t[_a](17.88, 14.61), t.closePath(), t[La](), t.stroke(), t[Ba](), t[Ba](), t.restore(), t[Ta](), t[Ta](), t.save(), t.fillStyle = pc, t[Ca](), t[Ra](23.556, 15.339), t.lineTo(20.93, 13.879), t[_a](26.953, 11.304), t.lineTo(25.559, 10.567), t[_a](33.251, 9.909), t.lineTo(31.087, 13.467), t[_a](29.619, 12.703), t[_a](23.556, 15.339), t[va](), t[La](), t.stroke(), t.restore(), t[Ba](), t.restore(), t[Ta](), t[Ta](), t.save(), t[Da] = pc, t.beginPath(), t[Ra](30.028, 23.383), t[_a](24.821, 20.366), t.lineTo(22.915, 21.227), t.lineTo(21.669, 16.762), t[_a](30.189, 17.942), t.lineTo(28.33, 18.782), t[_a](33.579, 21.725), t.lineTo(30.028, 23.383), t[va](), t[La](), t.stroke(), t.restore(), t[Ba](), t[Ta](), t[Ta](), t[Da] = pc, t[Ca](), t.moveTo(30.028, 23.383), t.lineTo(24.821, 20.366), t.lineTo(22.915, 21.227), t[_a](21.669, 16.762), t[_a](30.189, 17.942), t[_a](28.33, 18.782), t[_a](33.579, 21.725), t[_a](30.028, 23.383), t[va](), t.fill(), t.stroke(), t.restore(), t.restore(), t[Ba](), t.restore(), t[Ba](), t[Ba]()
      }
    },
    exchanger: {
      draw: function (t) {
        var i;
        t[Ta](), t[Aa](0, 0), t[Ca](), t[Ra](0, 0), t[_a](40, 0), t[_a](40, 40), t.lineTo(0, 40), t[va](), t.clip(), t[Aa](0, 0), t[Aa](0, 0), t[wo](1, 1), t.translate(0, 0), t[pa] = Of, t[pf] = wr, t[Mf] = Ir, t[qf] = 4, t[Ta](), t.save(), t[Ba](), t.save(), t.restore(), t.save(), t[Ba](), t[Ta](), t.restore(), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t.restore(), t[Ba](), t.save(), (i = t[Wo](.2095, 20.7588, 39.4941, 20.7588))[Zo](0, Mc), i[Zo](.0788, wc), i[Zo](.352, Tc), i[Zo](.6967, Oc), i[Zo](.8916, Ac), i.addColorStop(.9557, Sc), i.addColorStop(1, Dc), t[Da] = i, t.beginPath(), t[Ra](39.449, 12.417), t.lineTo(39.384, 9.424), t[da](39.384, 9.424, .7980000000000018, 22.264, .3710000000000022, 23.024), t[da](-.026999999999997804, 23.733, .4240000000000022, 24.903000000000002, .5190000000000022, 25.647000000000002), t[da](.7240000000000022, 27.244000000000003, .9240000000000023, 28.841, 1.1350000000000022, 30.437), t[da](1.3220000000000023, 31.843, 2.7530000000000023, 32.094, 3.9620000000000024, 32.094), t[da](8.799000000000003, 32.092, 13.636000000000003, 32.091, 18.473000000000003, 32.089), t[da](23.515, 32.086999999999996, 28.556000000000004, 32.086, 33.598, 32.083999999999996), t[da](34.859, 32.083999999999996, 36.286, 31.979999999999997, 37.266, 31.081999999999997), t[da](37.537, 30.820999999999998, 37.655, 30.535999999999998, 37.699999999999996, 30.229999999999997), t[_a](37.711, 30.316999999999997), t[_a](39.281, 16.498999999999995), t[da](39.281, 16.498999999999995, 39.467999999999996, 15.126999999999995, 39.489, 14.666999999999994), t[da](39.515, 14.105, 39.449, 12.417, 39.449, 12.417), t[va](), t[La](), t[ka](), t[Ba](), t[Ta](), t.save(), t.save(), t[Ta](), t.restore(), t.save(), t.restore(), t[Ta](), t.restore(), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ta](), t[Ba](), t[Ba](), t[Ta](), (i = t.createLinearGradient(19.8052, 7.7949, 19.8052, 24.7632))[Zo](0, Ic), i[Zo](.1455, Lc), i.addColorStop(.2975, Rc), i[Zo](.4527, Pc), i[Zo](.6099, kc), i.addColorStop(.7687, Cc), i[Zo](.9268, Nc), i[Zo](.9754, Bc), i[Zo](1, Fc), t[Da] = i, t.beginPath(), t[Ra](33.591, 24.763), t.bezierCurveTo(23.868000000000002, 24.754, 14.145, 24.746000000000002, 4.423000000000002, 24.738000000000003), t[da](3.140000000000002, 24.737000000000002, -.48799999999999777, 24.838000000000005, .3520000000000021, 22.837000000000003), t[da](1.292000000000002, 20.594000000000005, 2.2330000000000023, 18.351000000000003, 3.1730000000000023, 16.108000000000004), t[da](4.113000000000002, 13.865000000000006, 5.054000000000002, 11.623000000000005, 5.994000000000002, 9.380000000000004), t[da](6.728000000000002, 7.629000000000005, 9.521000000000003, 7.885000000000004, 11.156000000000002, 7.880000000000004), t.bezierCurveTo(16.974000000000004, 7.861000000000004, 22.793000000000003, 7.843000000000004, 28.612000000000002, 7.825000000000005), t.bezierCurveTo(30.976000000000003, 7.818000000000005, 33.341, 7.810000000000005, 35.707, 7.803000000000004), t[da](36.157000000000004, 7.802000000000004, 36.609, 7.787000000000004, 37.06, 7.804000000000005), t.bezierCurveTo(37.793, 7.833000000000005, 39.389, 7.875000000000004, 39.385000000000005, 9.424000000000005), t.bezierCurveTo(39.38400000000001, 9.647000000000006, 39.31, 10.138000000000005, 39.27700000000001, 10.359000000000005), t[da](38.81900000000001, 13.361000000000004, 38.452000000000005, 15.764000000000006, 37.99400000000001, 18.766000000000005), t[da](37.806000000000004, 19.998000000000005, 37.61800000000001, 21.230000000000004, 37.43000000000001, 22.462000000000007), t[da](37.151, 24.271, 35.264, 24.77, 33.591, 24.763), t.closePath(), t.fill(), t.stroke(), t[Ba](), t.restore(), t.restore(), t[Ta](), t.save(), t[Ta](), t.fillStyle = pc, t.beginPath(), t.moveTo(10.427, 19.292), t[_a](5.735, 16.452), t.lineTo(12.58, 13.8), t[_a](12.045, 15.07), t[_a](20.482, 15.072), t[_a](19.667, 17.887), t[_a](11.029, 17.851), t[_a](10.427, 19.292), t.closePath(), t[La](), t[ka](), t[Ba](), t[Ba](), t[Ta](), t[Ta](), t[Da] = pc, t.beginPath(), t[Ra](13.041, 13.042), t.lineTo(8.641, 10.73), t[_a](14.82, 8.474), t[_a](14.373, 9.537), t.lineTo(22.102, 9.479), t[_a](21.425, 11.816), t.lineTo(13.54, 11.85), t[_a](13.041, 13.042), t[va](), t[La](), t.stroke(), t[Ba](), t[Ba](), t[Ta](), t.save(), t[Da] = pc, t[Ca](), t.moveTo(29.787, 16.049), t.lineTo(29.979, 14.704), t[_a](21.51, 14.706), t[_a](22.214, 12.147), t[_a](30.486, 12.116), t.lineTo(30.653, 10.926), t.lineTo(36.141, 13.4), t[_a](29.787, 16.049), t.closePath(), t[La](), t[ka](), t[Ba](), t[Ba](), t[Ta](), t.save(), t[Da] = pc, t[Ca](), t.moveTo(28.775, 23.14), t.lineTo(29.011, 21.49), t[_a](19.668, 21.405), t.lineTo(20.523, 18.295), t.lineTo(29.613, 18.338), t[_a](29.815, 16.898), t[_a](35.832, 19.964), t[_a](28.775, 23.14), t[va](), t[La](), t.stroke(), t.restore(), t[Ba](), t.restore(), t[Ba]()
      }
    },
    cloud: {
      draw: function (t) {
        t[Ta](), t[Ca](), t[Ra](0, 0), t[_a](90.75, 0), t[_a](90.75, 62.125), t.lineTo(0, 62.125), t[va](), t.clip(), t.strokeStyle = Of, t[pf] = wr, t[Mf] = Ir, t.miterLimit = 4, t.save();
        var i = t.createLinearGradient(44.0054, 6.4116, 44.0054, 51.3674);
        i[Zo](0, "rgba(159, 160, 160, 0.7)"), i[Zo](.9726, $c), t.fillStyle = i, t[Ca](), t[Ra](57.07, 20.354), t[da](57.037, 20.354, 57.006, 20.358, 56.974000000000004, 20.358), t[da](54.461000000000006, 14.308, 48.499, 10.049000000000001, 41.538000000000004, 10.049000000000001), t[da](33.801, 10.049000000000001, 27.309000000000005, 15.316000000000003, 25.408000000000005, 22.456000000000003), t[da](18.988000000000007, 23.289, 14.025000000000006, 28.765000000000004, 14.025000000000006, 35.413000000000004), t[da](14.025000000000006, 42.635000000000005, 19.880000000000006, 48.49, 27.102000000000004, 48.49), t.bezierCurveTo(29.321000000000005, 48.49, 31.407000000000004, 47.933, 33.237, 46.961), t[da](34.980000000000004, 49.327, 37.78, 50.867999999999995, 40.945, 50.867999999999995), t[da](43.197, 50.867999999999995, 45.261, 50.086, 46.896, 48.785999999999994), t[da](49.729, 50.78699999999999, 53.244, 51.98799999999999, 57.07, 51.98799999999999), t.bezierCurveTo(66.412, 51.98799999999999, 73.986, 44.90699999999999, 73.986, 36.17099999999999), t[da](73.986, 27.436, 66.413, 20.354, 57.07, 20.354), t[va](), t[La](), t[ka](), t.restore(), t.restore()
      }
    },
    node: {
      width: 60,
      height: 100,
      draw: function (t) {
        t[Ta](), t[Aa](0, 0), t[Ca](), t.moveTo(0, 0), t[_a](40, 0), t[_a](40, 40), t[_a](0, 40), t[va](), t[Sa](), t[Aa](0, 0), t[Aa](0, 0), t[wo](1, 1), t[Aa](0, 0), t[pa] = Of, t[pf] = wr, t.lineJoin = Ir, t[qf] = 4, t.save(), t.fillStyle = Gc, t[Ca](), t[Ra](13.948, 31.075), t[_a](25.914, 31.075), t[la](25.914, 31.075, 25.914, 31.075), t.lineTo(25.914, 34.862), t[la](25.914, 34.862, 25.914, 34.862), t[_a](13.948, 34.862), t[la](13.948, 34.862, 13.948, 34.862), t.lineTo(13.948, 31.075), t[la](13.948, 31.075, 13.948, 31.075), t[va](), t[La](), t[ka](), t[Ba](), t[Ta](), t[Da] = Hc, t[Ca](), t.moveTo(29.679, 35.972), t[da](29.679, 36.675000000000004, 29.110999999999997, 37.244, 28.407999999999998, 37.244), t[_a](11.456, 37.244), t[da](10.751999999999999, 37.244, 10.183, 36.675, 10.183, 35.972), t[_a](10.183, 36.136), t[da](10.183, 35.431000000000004, 10.751999999999999, 34.863, 11.456, 34.863), t[_a](28.407, 34.863), t.bezierCurveTo(29.11, 34.863, 29.678, 35.431, 29.678, 36.136), t.lineTo(29.678, 35.972), t[va](), t[La](), t.stroke(), t[Ba](), t[Ta](), t[Da] = Hc, t[Ca](), t[Ra](.196, 29.346), t.bezierCurveTo(.196, 30.301, .9690000000000001, 31.075, 1.925, 31.075), t[_a](37.936, 31.075), t[da](38.891, 31.075, 39.665, 30.301, 39.665, 29.346), t.lineTo(39.665, 27.174), t[_a](.196, 27.174), t[_a](.196, 29.346), t[va](), t.fill(), t[ka](), t[Ba](), t[Ta](), t[Da] = Xc, t.beginPath(), t[Ra](37.937, 3.884), t.lineTo(1.926, 3.884), t[da](.97, 3.884, .19699999999999984, 4.657, .19699999999999984, 5.614), t.lineTo(.19699999999999984, 27.12), t[_a](39.666000000000004, 27.12), t[_a](39.666000000000004, 5.615), t[da](39.665, 4.657, 38.892, 3.884, 37.937, 3.884), t.closePath(), t[La](), t[ka](), t.restore(), t[Ta](), t.save(), t.restore(), t[Ta](), t[Ba](), t[Ba](), t[Ta]();
        var i = t.createLinearGradient(6.9609, 2.9341, 32.9008, 28.874);
        i.addColorStop(0, Wc), i[Zo](1, Uc), t[Da] = i, t[Ca](), t[Ra](35.788, 6.39), t.lineTo(4.074, 6.39), t[da](3.315, 6.39, 2.702, 7.003, 2.702, 7.763), t[_a](2.702, 24.616), t[_a](37.159, 24.616), t.lineTo(37.159, 7.763), t[da](37.159, 7.003, 36.546, 6.39, 35.788, 6.39), t.closePath(), t.fill(), t.stroke(), t[Ba](), t[Ba]()
      }
    },
    group: {
      draw: function (t) {
        t[Ta](), t.translate(0, 0), t[Ca](), t.moveTo(0, 0), t.lineTo(47.75, 0), t[_a](47.75, 40), t[_a](0, 40), t[va](), t[Sa](), t[Aa](0, 0), t[Aa](0, 0), t[wo](1, 1), t[Aa](0, 0), t[pa] = Of, t[pf] = wr, t[Mf] = Ir, t[qf] = 4, t[Ta](), t[Ta](), t[Da] = Gc, t.beginPath(), t[Ra](10.447, 26.005), t[_a](18.847, 26.005), t[la](18.847, 26.005, 18.847, 26.005), t[_a](18.847, 28.663), t[la](18.847, 28.663, 18.847, 28.663), t[_a](10.447, 28.663), t[la](10.447, 28.663, 10.447, 28.663), t[_a](10.447, 26.005), t.quadraticCurveTo(10.447, 26.005, 10.447, 26.005), t[va](), t[La](), t[ka](), t[Ba](), t[Ta](), t.fillStyle = Hc, t[Ca](), t[Ra](21.491, 29.443), t[da](21.491, 29.935000000000002, 21.094, 30.338, 20.597, 30.338), t.lineTo(8.698, 30.338), t[da](8.201, 30.338, 7.8020000000000005, 29.936, 7.8020000000000005, 29.443), t.lineTo(7.8020000000000005, 29.557000000000002), t[da](7.8020000000000005, 29.063000000000002, 8.201, 28.662000000000003, 8.698, 28.662000000000003), t[_a](20.597, 28.662000000000003), t[da](21.093, 28.662000000000003, 21.491, 29.062, 21.491, 29.557000000000002), t[_a](21.491, 29.443), t[va](), t.fill(), t[ka](), t.restore(), t[Ta](), t[Da] = Hc, t[Ca](), t[Ra](.789, 24.79), t[da](.789, 25.461, 1.334, 26.005, 2.0060000000000002, 26.005), t.lineTo(27.289, 26.005), t.bezierCurveTo(27.961000000000002, 26.005, 28.504, 25.461, 28.504, 24.79), t[_a](28.504, 23.267), t[_a](.789, 23.267), t[_a](.789, 24.79), t[va](), t[La](), t[ka](), t[Ba](), t.save(), t[Da] = Xc, t.beginPath(), t[Ra](27.289, 6.912), t.lineTo(2.006, 6.912), t[da](1.3339999999999996, 6.912, .7889999999999997, 7.455, .7889999999999997, 8.126), t[_a](.7889999999999997, 23.227), t[_a](28.503999999999998, 23.227), t.lineTo(28.503999999999998, 8.126), t[da](28.504, 7.455, 27.961, 6.912, 27.289, 6.912), t[va](), t[La](), t.stroke(), t.restore(), t[Ta](), t.save(), t[Ba](), t[Ta](), t[Ba](), t.restore(), t[Ta]();
        var i = t.createLinearGradient(5.54, 6.2451, 23.7529, 24.458);
        i.addColorStop(0, Wc), i.addColorStop(1, Uc), t[Da] = i, t.beginPath(), t[Ra](25.78, 8.671), t.lineTo(3.514, 8.671), t[da](2.9819999999999998, 8.671, 2.549, 9.101999999999999, 2.549, 9.635), t[_a](2.549, 21.466), t[_a](26.743, 21.466), t[_a](26.743, 9.636), t.bezierCurveTo(26.743, 9.102, 26.312, 8.671, 25.78, 8.671), t[va](), t[La](), t[ka](), t[Ba](), t.restore(), t[Ta](), t[Ta](), t[Da] = Gc, t.beginPath(), t[Ra](27.053, 33.602), t[_a](36.22, 33.602), t.quadraticCurveTo(36.22, 33.602, 36.22, 33.602), t[_a](36.22, 36.501), t[la](36.22, 36.501, 36.22, 36.501), t.lineTo(27.053, 36.501), t.quadraticCurveTo(27.053, 36.501, 27.053, 36.501), t[_a](27.053, 33.602), t[la](27.053, 33.602, 27.053, 33.602), t[va](), t.fill(), t[ka](), t[Ba](), t[Ta](), t[Da] = Hc, t[Ca](), t[Ra](39.104, 37.352), t[da](39.104, 37.891, 38.67, 38.327, 38.13, 38.327), t[_a](25.143, 38.327), t[da](24.602, 38.327, 24.166, 37.891, 24.166, 37.352), t[_a](24.166, 37.477999999999994), t[da](24.166, 36.937, 24.602, 36.501, 25.143, 36.501), t[_a](38.131, 36.501), t[da](38.671, 36.501, 39.105, 36.937, 39.105, 37.477999999999994), t.lineTo(39.105, 37.352), t[va](), t.fill(), t.stroke(), t[Ba](), t.save(), t.fillStyle = Hc, t.beginPath(), t[Ra](16.514, 32.275), t[da](16.514, 33.004999999999995, 17.107, 33.601, 17.839, 33.601), t[_a](45.433, 33.601), t[da](46.166, 33.601, 46.758, 33.005, 46.758, 32.275), t[_a](46.758, 30.607999999999997), t[_a](16.514, 30.607999999999997), t.lineTo(16.514, 32.275), t[va](), t[La](), t[ka](), t[Ba](), t.save(), t[Da] = Xc, t[Ca](), t[Ra](45.433, 12.763), t[_a](17.839, 12.763), t[da](17.107, 12.763, 16.514, 13.356, 16.514, 14.089), t[_a](16.514, 30.57), t.lineTo(46.757999999999996, 30.57), t[_a](46.757999999999996, 14.088), t.bezierCurveTo(46.758, 13.356, 46.166, 12.763, 45.433, 12.763), t.closePath(), t.fill(), t[ka](), t[Ba](), t.save(), t.save(), t[Ba](), t[Ta](), t[Ba](), t[Ba](), t.save(), (i = t[Wo](21.6973, 12.0352, 41.5743, 31.9122))[Zo](0, Wc), i.addColorStop(1, Uc), t[Da] = i, t[Ca](), t.moveTo(43.785, 14.683), t[_a](19.486, 14.683), t[da](18.903000000000002, 14.683, 18.433, 15.153, 18.433, 15.735), t[_a](18.433, 28.649), t[_a](44.837, 28.649), t.lineTo(44.837, 15.734), t[da](44.838, 15.153, 44.367, 14.683, 43.785, 14.683), t[va](), t.fill(), t.stroke(), t[Ba](), t.restore(), t.save(), t.globalAlpha = .5, t[Ca](), t.moveTo(23.709, 36.33), t[_a](4.232, 36.33), t[_a](4.232, 27.199), t.lineTo(5.304, 27.199), t.lineTo(5.304, 35.259), t[_a](23.709, 35.259), t[_a](23.709, 36.33), t[va](), t[La](), t[ka](), t[Ba](), t.restore()
      }
    },
    subnetwork: {
      draw: function (t) {
        t[Ta](), t[Aa](0, 0), t[Ca](), t[Ra](0, 0), t[_a](60.75, 0), t[_a](60.75, 42.125), t.lineTo(0, 42.125), t[va](), t.clip(), t[Aa](0, .26859504132231393), t[wo](.6694214876033058, .6694214876033058), t[Aa](0, 0), t[pa] = Of, t[pf] = wr, t[Mf] = Ir, t[qf] = 4, t[Ta](), t[Ta](), t[Ba](), t[Ta](), t.restore(), t.restore(), t[Ta]();
        var i = t[Wo](43.6724, -2.7627, 43.6724, 59.3806);
        i[Zo](0, "rgba(159, 160, 160, 0.7)"), i[Zo](.9726, $c), t.fillStyle = i, t[Ca](), t.moveTo(61.732, 16.509), t.bezierCurveTo(61.686, 16.509, 61.644, 16.515, 61.599, 16.515), t.bezierCurveTo(58.126, 8.152000000000001, 49.884, 2.2650000000000006, 40.262, 2.2650000000000006), t[da](29.567, 2.2650000000000006, 20.594, 9.545000000000002, 17.966, 19.415), t[da](9.09, 20.566, 2.229, 28.136, 2.229, 37.326), t[da](2.229, 47.309, 10.322, 55.403000000000006, 20.306, 55.403000000000006), t[da](23.374000000000002, 55.403000000000006, 26.257, 54.633, 28.787, 53.28900000000001), t[da](31.197, 56.56000000000001, 35.067, 58.69000000000001, 39.442, 58.69000000000001), t[da](42.555, 58.69000000000001, 45.408, 57.60900000000001, 47.669, 55.81200000000001), t[da](51.586, 58.57800000000001, 56.443999999999996, 60.238000000000014, 61.732, 60.238000000000014), t[da](74.64699999999999, 60.238000000000014, 85.116, 50.45000000000002, 85.116, 38.37400000000001), t.bezierCurveTo(85.116, 26.298, 74.646, 16.509, 61.732, 16.509), t[va](), t.fill(), t[ka](), t.restore(), t[Ta](), t.save(), t[Da] = Gc, t[Ca](), t[Ra](34.966, 44.287), t[_a](45.112, 44.287), t[la](45.112, 44.287, 45.112, 44.287), t.lineTo(45.112, 47.497), t[la](45.112, 47.497, 45.112, 47.497), t[_a](34.966, 47.497), t[la](34.966, 47.497, 34.966, 47.497), t[_a](34.966, 44.287), t[la](34.966, 44.287, 34.966, 44.287), t[va](), t[La](), t[ka](), t[Ba](), t.save(), t.fillStyle = Yc, t[Ca](), t.moveTo(48.306, 48.439), t.bezierCurveTo(48.306, 49.034, 47.824999999999996, 49.52, 47.226, 49.52), t[_a](32.854, 49.52), t[da](32.253, 49.52, 31.771, 49.034000000000006, 31.771, 48.439), t[_a](31.771, 48.578), t[da](31.771, 47.981, 32.253, 47.497, 32.854, 47.497), t[_a](47.226, 47.497), t[da](47.824999999999996, 47.497, 48.306, 47.98, 48.306, 48.578), t[_a](48.306, 48.439), t[va](), t[La](), t[ka](), t.restore(), t[Ta](), t[Da] = jc, t[Ca](), t.moveTo(23.302, 42.82), t[da](23.302, 43.63, 23.96, 44.287, 24.772, 44.287), t[_a](55.308, 44.287), t[da](56.12, 44.287, 56.775, 43.629999999999995, 56.775, 42.82), t[_a](56.775, 40.98), t[_a](23.302, 40.98), t.lineTo(23.302, 42.82), t[va](), t[La](), t[ka](), t.restore(), t.save(), t.fillStyle = Xc, t[Ca](), t.moveTo(55.307, 21.229), t[_a](24.771, 21.229), t[da](23.959, 21.229, 23.301000000000002, 21.884, 23.301000000000002, 22.695), t[_a](23.301000000000002, 40.933), t[_a](56.774, 40.933), t[_a](56.774, 22.695), t[da](56.774, 21.884, 56.119, 21.229, 55.307, 21.229), t[va](), t[La](), t[ka](), t[Ba](), t[Ta](), t[Ta](), t.restore(), t.save(), t.restore(), t[Ba](), t.save(), (i = t[Wo](29.04, 20.4219, 51.0363, 42.4181))[Zo](0, Wc), i[Zo](1, Uc), t[Da] = i, t.beginPath(), t.moveTo(53.485, 23.353), t[_a](26.592, 23.353), t.bezierCurveTo(25.948999999999998, 23.353, 25.427, 23.873, 25.427, 24.517000000000003), t[_a](25.427, 38.807), t[_a](54.647, 38.807), t[_a](54.647, 24.517000000000003), t[da](54.648, 23.873, 54.127, 23.353, 53.485, 23.353), t.closePath(), t.fill(), t[ka](), t.restore(), t[Ba](), t[Ba]()
      }
    }
  };
  for (var E$ in g$) XF(Zc + E$, g$[E$]);

  function x$(t) {
    this[Qc] && this[Vc] && (t.x -= this[Vc].x, t.y -= this[Vc].y), this[Kc] && tF(t, this[Kc]), t.x += this[zc] || 0, t.y += this.$offsetY || 0;
    var i = hH(this);
    return i ? tF(t, i) : t
  }

  function m$(t) {
    var i = hH(this);
    return i && tF(t, -i), t.x -= this[zc] || 0, t.y -= this.$offsetY || 0, this.$rotate && tF(t, -this[Kc]), this[Qc] && this[Vc] && (t.x += this._oAF.x, t.y += this[Vc].y), t
  }

  function p$() {
    var t = this[Jc];
    this[Jc] && (this[Jc] = !1, this[qc] = !0, this._8O.setByRect(this._kL), this[tu] && this._8O.grow(this[tu]), this[iu] && this._8O[nu](this[iu]));
    var i = this._$r();
    if (i) var n = this[eu] && this[su];
    return this.$invalidateAnchorPoint && this[Qc] && (this[qc] = !1, n && (t = !0), this[Vc] = JN(this.$anchorPosition, this._8O.width, this._8O[Xt]), this[Vc].x += this._8O.x, this[Vc].y += this._8O.y), i ? (t && (this._oAackgroundGradientInvalidateFlag = !0, function (t) {
      var i = this._8O.x + this.$border / 2,
        n = this._8O.y + this[iu] / 2,
        e = this._8O[Ht] - this.$border,
        s = this._8O[Xt] - this[iu],
        h = 0,
        r = 0;
      if (this[hu] && (dN(this.$borderRadius) ? h = r = this[hu] : (h = this[hu].x || 0, r = this[hu].y || 0), h = Math.min(h, e / 2), r = Math.min(r, s / 2)), t && (this[ru] = this._oAF.x - this[zc] + this[au], this[ou] = this[Vc].y - this[fu] + this[cu], !this._8O.intersectsPoint(this._pointerX, this[ou]))) {
        var a = new v$(i, n, e, s, h, r, this.$pointerWidth, this[ru], this._pointerY);
        return this._nIShape = a._mU, this._nIShape[ of ].set(i, n, e, s), void(this.__mYPointer = !0)
      }
      this[uu] && this[uu][Ot](), this[uu] = ZG[_u](i, n, e, s, h, r, this[uu]), this[uu].bounds.set(i, n, e, s)
    }.call(this, n)), this._oAackgroundGradientInvalidateFlag && (this._oAackgroundGradientInvalidateFlag = !1, this[lu] && this[uu] && this._nIShape.bounds ? this._oAackgroundGradient = jF[_][du].call(this.backgroundGradient, this[uu][ of ]) : this[vu] = null)) : this[bu] = !1, t
  }

  function M$(t, i, n, e) {
    if (e && (t[Ht] < 0 || t[Xt] < 0)) return t.x = i, t.y = n, void(t[Ht] = t[Xt] = 0);
    i < t.x ? (t[Ht] += t.x - i, t.x = i) : i > t.x + t[Ht] && (t[Ht] = i - t.x), n < t.y ? (t.height += t.y - n, t.y = n) : n > t.y + t.height && (t[Xt] = n - t.y)
  }
  var w$ = function () {
    this[yu] = !1;
    var t = this._h1;
    t.clear();
    var i = this.$border || 0,
      n = this._8O.x + i / 2,
      e = this._8O.y + i / 2,
      s = this._8O.width - i,
      h = this._8O[Xt] - i,
      r = x$.call(this, {
        x: n,
        y: e
      });
    M$(t, r.x, r.y, !0), M$(t, (r = x$.call(this, {
      x: n + s,
      y: e
    })).x, r.y), M$(t, (r = x$[m](this, {
      x: n + s,
      y: e + h
    })).x, r.y), M$(t, (r = x$.call(this, {
      x: n,
      y: e + h
    })).x, r.y), this[bu] && M$(t, (r = x$[m](this, {
      x: this[ru],
      y: this[ou]
    })).x, r.y), i && t.grow(i / 2)
  };

  function T$(t, i) {
    if (i)
      if (i._8O[Tt]()) t.$x = i.$x, t.$y = i.$y;
      else {
        var n = function (t, i, n) {
          var e, s = t[Yo],
            h = t[gu] === I ? this.layoutByPath : t.layoutByPath;
          return this[Eu] instanceof o$ && h ? ((e = DF[xu](s, this[Eu], this[ma], i, n, t.globalDirection)).x *= this._kM, e.y *= this._kO) : ((e = JN(s, this._8O[Ht], this._8O[Xt])).x += this._8O.x, e.y += this._8O.y), x$[m](this, e)
        } [m](i, t);
        t.$x = n.x, t.$y = n.y, t[mu] = n[It]
      }
    else t.$x = 0, t.$y = 0;
    t[yu] && w$[m](t)
  }

  function O$(t) {
    if (t[If] === I) {
      var i, n;
      if (t[pu]) i = t[Mu], n = t[pu];
      else {
        var e;
        if (t.mozDash !== I) e = wu;
        else {
          if (t[Tu] === I) return !1;
          e = Tu
        }
        n = function (t) {
          this[e] = t
        }, i = function () {
          return this[e]
        }
      }
      wN(t, If, {
        get: function () {
          return i[m](this)
        },
        set: function (t) {
          n[m](this, t)
        }
      })
    }
    if (t.lineDashOffset === I) {
      var s;
      if (t.mozDashOffset !== I) s = Ou;
      else {
        if (t[Au] === I) return;
        s = Au
      }
      wN(t, kf, {
        get: function () {
          return this[s]
        },
        set: function (t) {
          this[s] = t
        }
      })
    }
  }

  function A$(t) {
    return t[Su](function (t, i) {
      return 2 * t + i
    }, 0)
  }

  function S$(t) {
    for (var i = [], n = 7; 0 <= n; n--) i[D](!!(t & 1 << n));
    return i
  }
  var D$ = {
      _hE: !1,
      _l3: null,
      _dH: 0,
      _m4: -1,
      _lX: null,
      _f5: function (t) {
        this._l3 || (this._l3 = [], this._k7 = 2), this._l3[D](t), this._e2(), this._m3()
      },
      _m3: function () {
        if (!this._lX) {
          var i = this;
          this._lX = setTimeout(function t() {
            !1 === i._e2() ? delete i._lX : i._lX = setTimeout(t, i._hG())
          }, this._hG())
        }
      },
      _hG: function () {
        return Math.max(20, this._l3[this._m4][Lu])
      },
      _e2: function () {
        return this._fV(this._m4 + 1)
      },
      _fV: function (t) {
        if (this._hE) t %= this._dH;
        else if (t >= this._l3[N]) return !1;
        if (this._m4 == t) return !1;
        this._m4 = t;
        var i = this._l3[this._m4],
          n = i[Ru];
        return n || (i[Ru] = n = rF(this[Ht], this[Xt]), n.g[_o](i.data, 0, 0), n[za] = i[za]), this._lQ = n, this[Jc] = !0, this._eG()
      },
      _dI: function () {
        if (this._l3) {
          if (this._hE = !0, this._dH = this._l3[N], 1 == this._dH) return this._eG();
          this._m3()
        } else this._iX()
      },
      _n3: function () {
        this._lX && (clearTimeout(this._lX), delete this._lX)
      },
      _eG: function () {
        var t = this[Ja][Yi];
        if (!t || !t[N]) return !1;
        for (var i = new tB(this, Io, Lo, this._lQ), n = 0, e = t[N]; n < e; n++) {
          var s = t[n];
          s.scope._kP && s[Ui]._kP[Pu] ? (t[M](n, 1), n--, e--) : s[Wi].call(s[Ui], i)
        }
        return 0 < t[N]
      },
      _oA4: function (t, i) {
        this[Ja][Zi](t, i), this._hE && !this._lX && this._m3()
      },
      _6Y: function (t, i) {
        this[Ja][Qi](t, i), this[Ja][ku]() || this._n3()
      },
      _iW: function () {
        this._n3(), this[Ja].clear()
      },
      _gG: function (t, i, n) {
        var e = this._lQ[Cu];
        return e || (this._lQ[Cu] = e = new d$(this._lQ, 1)), e
      }
    },
    I$ = function (t) {
      this[bn] = t, this.len = this[bn][N], this.pos = 0, this[Nu] = function () {
        if (this.pos >= this[bn][N]) throw new Error("Attempted to read past end of stream.");
        return 255 & t[Du](this.pos++)
      }, this[Bu] = function (t) {
        for (var i = [], n = 0; n < t; n++) i[D](this[Nu]());
        return i
      }, this[Fu] = function (t) {
        for (var i = "", n = 0; n < t; n++) i += String.fromCharCode(this.readByte());
        return i
      }, this[$u] = function () {
        var t = this[Bu](2);
        return (t[1] << 8) + t[0]
      }
    },
    L$ = function (s, h) {
      function r(t) {
        for (var i = [], n = 0; n < t; n++) i[D](s[Bu](3));
        return i
      }

      function a() {
        var t, i;
        for (i = ""; t = s[Nu](), i += s[Fu](t), 0 !== t;);
        return i
      }

      function i(t) {
        var i, n, e;
        switch (t[Gu] = s[Nu](), t.label) {
          case 249:
            t[Hu] = Xu,
              function (t) {
                s.readByte();
                var i = S$(s[Nu]());
                t[Wu] = i.splice(0, 3), t[oo] = A$(i[M](0, 3)), t.userInput = i[Uu](), t.transparencyGiven = i.shift(), t[Yu] = s[$u](), t.transparencyIndex = s.readByte(), t.terminator = s.readByte(), h.gce && h.gce(t)
              }(t);
            break;
          case 254:
            t[Hu] = ju, (n = t).comment = a(), h.com && h.com(n);
            break;
          case 1:
            t[Hu] = Zu, e = t, s[Nu](), e[Qu] = s[Bu](12), e.ptData = a(), h.pte && h.pte(e);
            break;
          case 255:
            t[Hu] = Vu,
              function (t) {
                var i, n;
                switch (s[Nu](), t[Ku] = s[Fu](8), t[zu] = s[Fu](3), t.identifier) {
                  case "NETSCAPE":
                    n = t, s.readByte(), n.unknown = s[Nu](), n.iterations = s[$u](), n[Ju] = s.readByte(), h.app && h.app.NETSCAPE && h.app.NETSCAPE(n);
                    break;
                  default:
                    (i = t).appData = a(), h.app && h.app[i[Ku]] && h.app[i[Ku]](i)
                }
              }(t);
            break;
          default:
            t.extType = qu, (i = t)[bn] = a(), h[qu] && h[qu](i)
        }
      }

      function n(t) {
        t[fo] = s[$u](), t[co] = s[$u](), t.width = s[$u](), t.height = s[$u]();
        var i = t[Ht] * t.height,
          n = S$(s[Nu]());
        t.lctFlag = n.shift(), t[t_] = n.shift(), t[i_] = n.shift(), t[Wu] = n[M](0, 2), t[n_] = A$(n.splice(0, 3)), t[e_] && (t.lct = r(1 << t[n_] + 1)), t[s_] = s[Nu]();
        var e = a();
        t[uo] = function (i, e, t) {
          function n(t) {
            for (var i = 0, n = 0; n < t; n++) e[Du](a >> 3) & 1 << (7 & a) && (i |= 1 << n), a++;
            return i
          }

          function s() {
            _ = [], u = i + 1;
            for (var t = 0; t < f; t++) _[t] = [t];
            _[f] = [], _[c] = null
          }
          for (var h, r, a = 0, o = [], f = 1 << i, c = 1 + f, u = i + 1, _ = [], l = 0; r = h, h = n(u), !(l++ > t);)
            if (h !== f) {
              if (h === c) break;
              if (h < _[N]) r !== f && _[D](_[r][B](_[h][0]));
              else {
                if (h !== _[N]) throw new Error(Iu);
                _.push(_[r][B](_[r][0]))
              }
              o[D].apply(o, _[h]), _[N] === 1 << u && u < 12 && u++
            } else s();
          return o
        }(t[s_], e, i), t[t_] && (t[uo] = function (t, i) {
          for (var n, e, s = new Array(t.length), h = t[N] / i, r = [0, 4, 2, 1], a = [8, 8, 4, 2], o = 0, f = 0; f < 4; f++)
            for (var c = r[f]; c < h; c += a[f]) n = c, e = t[L](o * i, (o + 1) * i), s[M].apply(s, [n * i, i][B](e)), o++;
          return s
        }(t[uo], t.width)), h.img && h.img(t)
      }
      h = h || {};
      var e = function () {
        var t = {};
        switch (t[h_] = s[Nu](), String[r_](t.sentinel)) {
          case "!":
            t[Mi] = a_, i(t);
            break;
          case ",":
            t[Mi] = qa, n(t);
            break;
          case ";":
            t[Mi] = o_, h.eof && h.eof(t);
            break;
          default:
            throw new Error(f_ + t.sentinel.toString(16))
        }
        o_ !== t[Mi] && setTimeout(e, 0)
      };
      ! function () {
        var t = {};
        if (t.sig = s[Fu](3), t.ver = s[Fu](3), c_ !== t.sig) throw new Error(u_);
        t[Ht] = s.readUnsigned(), t[Xt] = s.readUnsigned();
        var i = S$(s.readByte());
        t[__] = i[Uu](), t[l_] = A$(i[M](0, 3)), t[i_] = i.shift(), t[d_] = A$(i[M](0, 3)), t[v_] = s.readByte(), t[b_] = s[Nu](), t.gctFlag && (t.gct = r(1 << t[d_] + 1)), h.hdr && h.hdr(t)
      }(), setTimeout(e, 0)
    },
    R$ = "";
  x[ee] && x[ee](y_, function (t) {
    if (t[g_] && t[E_] && t[x_] && 73 == t[m_]) {
      var i = KB.name + p_ + KB.version + M_ + KB.publishDate + w_ + KB[T_] + w_ + KB.copyright + R$;
      KB[Oh](i)
    }
  }, !1);
  var P$ = O_;
  R$ = A_ + decodeURIComponent(S_);
  var k$, C$, N$, B$ = u,
    F$ = D_,
    $$ = I_,
    G$ = B$[rt];

  function H$(t, i) {
    try {
      if (null == t || t[N] < 8) return;
      if (null == i || i[N] <= 0) return;
      for (var n = "", e = 0; e < i[N]; e++) n += i[Du](e).toString();
      var s = Math[X](n[N] / 5),
        h = parseInt(n[L_](s) + n.charAt(2 * s) + n.charAt(3 * s) + n[L_](4 * s) + n[L_](5 * s), 10),
        r = Math.round(i.length / 2),
        a = Math.pow(2, 31) - 1,
        o = parseInt(t[Un](t[N] - 8, t.length), 16);
      for (t = t[Un](0, t[N] - 8), n += o; 10 < n[N];) n = (parseInt(n.substring(0, 10), 10) + parseInt(n[Un](10, n.length), 10)).toString();
      n = (h * n + r) % a;
      var f = "",
        c = "";
      for (e = 0; e < t[N]; e += 2) f = parseInt(parseInt(t[Un](e, e + 2), 16) ^ Math.floor(n / a * 255), 10), c += String[r_](f), n = (h * n + r) % a;
      return 0 | c[0] ? B$[R_ + F$ + P_](c) : null
    } catch (t) {}
  }

  function X$(t, i) {
    i = i || H_;
    try {
      N$[m](t, i, 666, 111)
    } catch (t) {}
  }
  G$ && (C$ = B$[k_][C_], G$[m](B$, function () {
    var t, i = P$;
    if (i) {
      i = (U$ = i)[k](Z);
      for (var n = 0; n < i.length && !((t = H$(i[n], C$)) && 8 <= t[k](w_)[N]);) 1 == i[N] && (t = H$(i[n], N_)), n++;
      if (!t || t[k](w_)[N] < 8) return Y$ = !0, "" === C$ || B_ == C$ || F_ == C$ ? (j$ = z$, void(W$ = Q$ = !1)) : (j$ = z$, void(Q$ = !0));
      if ((W$ = t[k](w_))[3] == zX) {
        Q$ = !1, 1 < W$[0] && (Y$ = !1);
        var e = W$[5];
        Z$ = e;
        var s = W$[6];
        j$ = s
      } else Y$ = !0
    } else Q$ = !0
  }, $_), G$[m](B$, function () {
    var t = U$;
    if (t) {
      var i;
      t = t.split(Z);
      for (var n = 0; n < t.length && !((i = hG(t[n], C$)) && 8 <= i[k](w_)[N]);) 1 == t[N] && (i = hG(t[n], N_)), n++;
      if (8 <= i.split(w_)[N]) return void(V$ = !1)
    }
    V$ = !(!C$ || B_ == C$ || F_ == C$)
  }, $$), G$[m](B$, function () {
    U$ && U$ == P$ && (K$ = !1)
  }, G_));
  var W$, U$, Y$ = !0,
    j$ = !0,
    Z$ = !0,
    Q$ = !0,
    V$ = !0,
    K$ = !0,
    z$ = 2048;

  function J$() {
    if (Y$) {
      var t = ZH.prototype._kR,
        e = X$;
      ZH[_]._kR = function () {
        t.apply(this, arguments), e[m](this[X_], this.g)
      };
      var s = gG[_]._hY;
      gG[_]._hY = function (t, i, n) {
        s[d](this, arguments), e.call(this, t)
      }
    }
  }

  function q$() {
    if (!0 !== Z$ && Z$) {
      var t = Z$[k](q);
      if (3 != t.length) return void(nH.prototype._kR = null);
      3 * (365.2425 * (parseInt(t[0], 10) - 2e3 + 30) + 3 * (parseInt(t[1], 10) - 1) * 10 + parseInt(t[2], 10)) * 8 * 3 * 1200 * 1e3 < k$ && (nH.prototype._kR = null)
    }
  }

  function tG() {
    var t = 0 | j$;
    if (t) {
      var i = _B[_]._lV;
      _B[_]._lV = function () {
        return !(this._kH.length > t) && i[d](this, arguments)
      }
    }
  }

  function iG() {
    Q$ && (LN[_]._lV = LN[_]._gQ)
  }

  function nG() {
    if (V$) {
      var e = X$,
        s = gG[_]._hY;
      gG.prototype._hY = function (t, i, n) {
        s.apply(this, arguments), e[m](this, t)
      }
    }
  }

  function eG() {
    if (K$) {
      var t = ZH[_]._kR,
        i = X$;
      ZH.prototype._kR = function () {
        t[d](this, arguments), i.call(this[X_], this.g)
      }
    }
  }

  function sG() {
    W$ === I && (gG[_]._kA = WN[ti])
  }
  var hG = function (t, i) {
    return H$(t, i) || ""
  };
  if (x[Bn]) {
    var rG = x[Bn](W_);
    rG[Yn][U_] = Qh, rG.onload = function (t) {
      var i = t.target[Y_];
      if ("" !== C$ && B_ != C$ && j_ != C$) {
        var s = i[Z_][r_];
        i[rt](function () {
          var n, e;
          n = s, (e = [51, 10, 10, 100, 101, 109, 111, 46, 113, 117, 110, 101, 101, 46, 99, 111, 109, 44, 109, 97, 112, 46, 113, 117, 110, 101, 101, 46, 99, 111, 109, 44, 99, 110, 46, 113, 117, 110, 101, 101, 46, 99, 111, 109, 10, 50, 46, 48, 10, 49, 52, 57, 50, 54, 55, 54, 49, 48, 53, 50, 50, 48, 10, 10, 10])[At](function (t, i) {
            e[i] = n(t)
          }), e[Q_]("") != W$ && (nH[_]._kR = null)
        }, $$), this.parentNode[Qa][Va](this.parentNode)
      } else this[Qa][Qa][Va](this[Qa])
    }, (aG = x.createElement(Fn))[Yn][Ht] = V_, aG[Yn].height = V_, aG.style[K_] = io, aG[eo](rG), x[z_][eo](aG)
  }
  if (x[Bn]) {
    var aG, oG = x[Bn](W_);
    oG.style[U_] = Qh, oG[so] = function (t) {
      var i = t[J_][Y_];
      k$ = i[q_].now();
      var n = i.CanvasRenderingContext2D[_];
      N$ = n.fillText, eN && (i = B$);
      var e = i[rt];
      e[m](B$, iG, $$), e.call(B$, nG, tl), e[m](B$, sG, G_), e[m](B$, J$, il), e[m](B$, tG, nl), e[m](B$, eG, $$), e[m](B$, q$, $$), this.parentNode[Qa][Va](this[Qa])
    }, (aG = x[Bn](Fn))[Yn].width = V_, aG.style.height = V_, aG[Yn][K_] = io, aG.appendChild(oG), x[z_][eo](aG)
  }
  var fG = el;
  xB(q + fG, {
    position: sl,
    userSelect: Qh,
    outline: Qh,
    transformOrigin: hl,
    "-webkit-tap-highlight-color": Of
  });
  var cG = rl;
  xB(q + cG, {
    width: al,
    height: al,
    position: ol,
    overflow: io,
    textAlign: Jt,
    outline: Qh,
    tapHighlightColor: Of,
    userSelect: Qh
  });
  var uG = fl;

  function RC(t, f) {
    return function t(i) {
      var n = i.length,
        e = Math[c](n / 2);
      return n <= 1 ? i : function (t, i) {
        for (var n = t[N], e = i[N], s = n + e, h = new Array(s), r = 0, a = 0, o = 0; o < s;) r === n ? h[o++] = i[a++] : a === e || f(t[r], i[a]) <= 0 ? h[o++] = t[r++] : h[o++] = i[a++];
        return h
      }(t(i[L](0, e)), t(i.slice(e)))
    }(t)
  }
  xB(q + uG, {
    overflow: io,
    "text-align": Jt,
    "-webkit-tap-highlight-color": Of,
    outline: Qh
  });
  var _G, lG = YC(function (t) {
    this[cl] = new vG, this._o0 = new LN, this._91 = [], this._dJ = [], this._n5ingList = [], this._90 = {}, this[ of ] = new WN, this._l7 = new wG, this._viewport = new AG, this._l7[Xi] = function (t) {
      this._7T(t)
    } [ns](this), this._dN(), this[ul](t)
  }, {
    _oAU: null,
    _k9: null,
    _o0: null,
    _dJ: null,
    _l7: null,
    _d0: function (t) {
      return t ? (this._6Ws || (this._6Ws = {}), !this[_l][t] && (this._6Ws[t] = !0, void this.invalidate())) : this[ll]()
    },
    _o8C: function (t) {
      return this._6Ws && this[_l][t]
    },
    isInvalidate: function () {
      return this._6W
    },
    clear: function () {
      this._o0[Ot](), this._dJ[N] = 0, this._90 = {}, this._oAE = !1, this[ll]()
    },
    _7O: function () {
      this._d0(dl), this._2Q()
    },
    _2Q: function () {
      this._d0(vl)
    },
    invalidate: function (t) {
      !t && this._6W || (this._6W = !0, this._n3 || (this[bl] = requestAnimationFrame(this._gF[ns](this))))
    },
    _7P: function (t) {
      (this._n3 = t) ? this._kRingID && (cancelAnimationFrame(this._kRingID), this[bl] = null): this._6W && this[ll](!0)
    },
    _gF: function () {
      this._kRingID = null, this._6W = !1;
      var t = this[xe];
      this._oAE || (this._dL(), this._oAE = !0), this._dK(!t), this._3P(), this._kR(), this._2C()
    },
    _dK: function (t) {
      this._oB0 = t || this[yl], (t || this[_l].size) && this[gl](), (t || this[_l][El]) && this._7V(), this._oAX(t), this._4P(t), this._6Ws = {}
    },
    _3P: function () {
      this._dJ.length = 0;
      var n = this._viewport;
      if (this._o0[At](function (t) {
          if (!1 !== t[xl]) {
            var i = this._oAW(t);
            n[ml](i.x, i.y, i[Ht], i[Xt]) && this._dJ[D](t)
          }
        }, this), this._dJ = this._jN(this._dJ), !this[pl]) {
        var e = this[cl];
        this[Ml].length = 0, e[wl](this._viewport), e._jP() || this._dJ[At](function (t) {
          var i = this[Tl](t);
          e._fG(i.x, i.y, i[Ht], i[Xt]) && this._n5ingList[D](t)
        }, this)
      }
    },
    _jN: function (t) {
      return eN ? t = RC(t, this[Ol]) : t.sort(this[Ol]), t
    },
    _o8D: function (t, i) {
      return (t = t[Al] || 0) - (i[Al] || 0)
    },
    _oAW: function (t) {
      return t[Sl]
    },
    _kR: function () {
      if (this[pl]) return this._fD(), this._7R(!0), void this.render(this[Dl], this._dJ);
      this._7R(this._oAuffer);
      var t = this._oB2,
        i = this[Dl];
      i[Ta](), this._oAuffer && (dG(i), i[vo](this._oAuffer.canvas, this[Il].x, this[Il].y)), t._lB(i, this._fF.bind(this)), this._fD(), this[Ll](i, this[Ml]), i.restore()
    },
    _7R: function (t) {
      var i;
      this._d0CanvasSizeFlag ? (this[Rl] = !1, this._k9[zr](this._width, this[Eo])) : t && ((i = this._k9)[Ht] = i.width)
    },
    _o8F: function () {
      var t = this[Ht],
        i = this.height;
      if (this[go] == t && this._height == i) return !1;
      this[go] = t, this[Eo] = i, this[Rl] = !0
    },
    _4P: function (t) {
      if (!t && !this._6Ws[vl]) return !1;
      var i = this._l7[Pl]([0, 0]),
        n = this[wo],
        e = this._width / n,
        s = this[Eo] / n,
        h = this[It],
        r = this[kl];
      if (r.x == i[0] && r.y == i[1] && r[Ht] == e && r[Xt] == s && r.rotate == h) return !1;
      var a = r[bf]();
      return this[kl].set(i[0], i[1], e, s, h, n), this._3J(this._viewport, a, t), !0
    },
    _3J: function (t, i, n) {
      this._oB0 || n || (this[Il] = this._hN(i, t))
    },
    _7T: function (t) {
      var i;
      this._oAE && (this._n3 && (this[Cl] ? this[Cl][Nl] = i = EG.mul([], this._l7.m, EG[Bl]([], this[Cl].m)) : i = this._l7.m, this._5Z(i)), this._d0(El), this._2Q())
    },
    _5Z: function (t) {
      this[Fl] = t, SG[$l](this._k9, Gl, t ? Hl + t.join(Z) + ")" : "")
    },
    _7V: function () {
      var t = this[Cl];
      if (this[Cl] = {
          tx: this._l7.m[4],
          ty: this._l7.m[5],
          m: this._l7.m.slice(),
          scale: this._l7._i3(),
          rotate: this._l7._fJ()
        }, this[Fl] && this._5Z(null), !this._oB0) {
        if (this._2R(this[Cl], t), !t || t[wo] != this[Cl].scale) return this._7Z(this._oBurrentMatrix[wo], t ? t[wo] : null), void(this[pl] = !0);
        if (!t || t[It] != this[Cl].rotate) return this._69(this[Cl][It], t ? t.rotate : null), void(this._oB0 = !0);
        var i = t.m[4] - this[Cl].m[4],
          n = t.m[5] - this[Cl].m[5],
          e = this[jr];
        i *= e, n *= e, (1e-4 < Math.abs(i - Math.round(i)) || 1e-4 < Math.abs(n - Math[Vh](n))) && (this._oB0 = !0)
      }
    },
    _7W: function () {
      var i = this[ of ],
        t = i[l]();
      i.clear(), this._o0.forEach(function (t) {
        !1 !== t[xl] && i.add(this[Tl](t))
      }, this), i.equals(t) || this._3R(i, t)
    },
    _3R: function (t, i) {},
    _oAE: !1,
    _dL: function () {},
    _o8G: function (t) {
      var i = t[jr];
      t.scale(i, i), t[Gl][d](t, this._l7.m)
    },
    render: function (i, t) {
      t && t[N] && (i.save(), this[Xl](i), t[At](function (t) {
        if (i[Ta](), !1 !== t[Wl]) try {
          t[Ll](i)
        } catch (t) {
          console[Za](t)
        }
        i.restore()
      }, this), i[Ba]())
    },
    setParent: function (t) {
      vN(t) && (t = x[Ul](t)), this._o1 != t && (this._o1 && this._oAU && (lN(this._o1, uG), this._o1[Va](this[Yl])), this._o1 = t, this._o1 && (_N(this._o1, uG), this._o1.appendChild(this._7X()), this._7O()))
    },
    _7X: function () {
      return this._oAU || this._dN(), this[Yl]
    },
    _dN: function () {
      var t = rF(!0);
      O$(t.g), t[jl] = fG;
      var i = x[Bn](Fn);
      return i[ee](Xe, function (t) {
        if (x.activeElement == this) return t[le] && t.preventDefault(), !1
      }.bind(i), !1), i.className = cG, i[eo](t), i[Zl] = 0, this._k9 = t, this[Yl] = i, this[Dl] = this._k9[Ql](Yr), t
    },
    toLogical: function (t, i) {
      return t instanceof Object && (AN(t) && (t = this._8G(t)), t = Array.isArray(t) ? (i = t[1] || 0, t[0] || 0) : (i = t.y || 0, t.x || 0)), this._l7[Pl]([t, i])
    },
    toCanvas: function (t, i) {
      return this._l7[Gl]([t, i])
    },
    _8G: function (t) {
      return function (t, i) {
        t[tt] && (t = t[Vl] && t[Vl][N] ? t.changedTouches[0] : t.touches[0]);
        var n = t[ve] || 0,
          e = t[Kl] || 0;
        fN && sN && (u[zl] && n == t[Jl] && (n -= u[zl]), u[ql] && e == t.pageY && (e -= u[ql]));
        var s = i[td]();
        n -= s[Jt], e -= s.top;
        var h = pB(i, s);
        return h && 1 !== h && (n /= h, e /= h), {
          x: n,
          y: e
        }
      }(t, this._oAU)
    },
    _f7: function (t, i, n) {
      if (t[Do] instanceof Function) return t.hitTest(i, n);
      var e = this[Tl](t);
      return e ? n ? WN.intersects(e.x, e.y, e[Ht], e[Xt], i[0] - n, i[1] - n, n + n, n + n) : WN[ml](e.x, e.y, e[Ht], e.height, i[0], i[1]) : t
    },
    hitTest: function (t, i) {
      return this._8Y(t, i)
    },
    _8Y: function (t, i) {
      i = this[id](i), t = this[nd](t);
      for (var n, e = this._dJ[N]; 0 <= --e;)
        if (n = this._dJ[e], this._f7(n, t, i)) return n
    },
    _o8H: function (t) {
      return t !== I && null !== t || (t = IN[ed]), t ? t / this.scale : 0
    },
    getUIByMouseEvent: function (t, i) {
      if (t[sd]) return this._o0[wt](t.uiId);
      var n = this._8Y(t, i);
      return t.uiId = n ? n.id : -1, n
    },
    _90: null,
    invalidateUI: function (t) {
      this._90[t.id] = t, this[ll]()
    },
    _o8J: function (t) {
      t[Ya] instanceof Function && t.validate(this)
    },
    _dO: function (t, i) {
      t[hd] && this._hP(t[hd]);
      var n = t.__j9;
      if (t[xl] = this._f8(t, i), !t[xl]) return n;
      var e = t.__kL;
      this[rd](t);
      var s = this[Tl](t);
      t[hd] = {
        x: s.x,
        y: s.y,
        width: s[Ht],
        height: s[Xt]
      };
      var h = t.__j9 !== n || !WN[ti](e, s);
      return h && t[hd] && this._hP(t[hd]), h
    },
    _f8: function (t, i) {
      return !1 !== t.visible
    },
    _$t: function (i) {
      this._o0[At](function (t) {
        this._dO(t, i)
      }, this), this._90 = {}, this._7W()
    },
    _oAX: function (t) {
      var i = this[wo];
      if (t) return this._$t(i);
      var n = this[ad];
      for (var e in this[ad] = !1, this._90) {
        var s = this._90[e];
        n ? this._dO(s, i) : n = this._dO(s, i)
      }
      this._90 = {}, n && this._7W()
    },
    _91: null,
    _2C: function () {
      if (!this._91[N]) return !1;
      var t = this._91;
      this._91 = [], t[At](function (t) {
        try {
          var i = t[m],
            n = t[Ui],
            e = t.delay;
          n instanceof Object ? i = i.bind(n) : n && !e && (e = parseInt(n)), e ? setTimeout(i, e) : i()
        } catch (t) {}
      }, this), this._6W && this._gF()
    },
    _e1: function (t, i, n) {
      this._91[D]({
        call: t,
        scope: i,
        delay: n
      }), this._6W || this._2C()
    },
    _4R: function (t, i) {
      for (var n = this._dJ, e = 0, s = n[N]; e < s; e++)
        if (!1 === t[m](i, n[e])) return !1
    },
    _f9: function (t, i) {
      this._o0[At](t, i)
    },
    _$y: function (t, i) {
      for (var n = this._dJ, e = n[N] - 1; 0 <= e; e--)
        if (!1 === t[m](i, n[e])) return !1
    },
    _4S: function (t, i) {
      this._o0[od](t, i)
    },
    _4T: function () {
      return this[ of ]
    },
    _hI: function (t, i, n) {
      t /= this[wo] || 1, this._l8(t, i, n)
    },
    _l8: function (t, i, n) {
      if (this[xe] && (i === I || null === i)) {
        var e = this[nd](this.width / 2, this[Xt] / 2);
        i = e[0] || 0, n = e[1] || 0
      }
      return this._l7.scale(t, [i || 0, n || 0])
    },
    _fA: function (t, i) {
      this._l7.translate([t, i], !0)
    },
    _oAY: function (t, i, n, e) {
      if (n == this[wo] && !1 !== e) {
        var s = this[jr];
        s != (0 | s) && (t = Math.round(t * s) / s, i = Math[Vh](i * s) / s)
      }
      this._l7.translateTo([t, i], n)
    },
    _lA: function (t, i) {
      return this._l8(this._fC, t, i)
    },
    _jO: function (t, i) {
      return this._l8(1 / this._fC, t, i)
    },
    _1R: function () {
      var t = this._4T();
      if (!t.isEmpty()) {
        var i = this[Ht] / t.width,
          n = this[Xt] / t[Xt],
          e = Math.min(i, n);
        return {
          scale: e = Math.max(this._hM, Math.min(this._hK, e)),
          cx: t.cx,
          cy: t.cy
        }
      }
    },
    _fC: 1.2,
    _hK: 10,
    _hM: .1,
    _oB0: !1,
    _7Z: function (t, i) {},
    _69: function (t, i) {},
    _2R: function () {},
    _fD: function () {
      this._oAuffer = null, this[cl]._mC()
    },
    _fF: function (t) {
      var i = this._l7,
        n = this._k9[jr],
        e = this[wo];
      if (!i._fJ()) {
        var s = i[Gl]([t[0], t[1]]);
        return s[0] *= n, s[1] *= n, n *= e, s[2] = t[2] * n, s[3] = t[3] * n, s
      }
      var h = new WN,
        r = i.transform([t[0], t[1]]);
      return h.add(r[0], r[1]), r = i[Gl]([t[0] + t[2], t[1]]), h.add(r[0], r[1]), r = i[Gl]([t[0], t[1] + t[3]]), h.add(r[0], r[1]), r = i.transform([t[0] + t[2], t[1] + t[3]]), h.add(r[0], r[1]), [h.x * n, h.y * n, h[Ht] * n, h.height * n]
    },
    _hN: function (t, i) {
      var n = this._k9;
      if (n.width && n[Xt]) {
        var e = i._43(t.x, t.y, t[Ht], t[Xt]);
        if (e && e[Ht] && e[Ht]) {
          var s = this[wo] * this[jr],
            h = this[cl],
            r = {};
          1e-6 < e.x && (r[Jt] = i._4Z(0, 0, e.x, i[Xt], s)), 1e-6 < i.width - e[$t] && (r.right = i._4Z(e[$t], 0, i[Ht] - e[$t], i[Xt], s)), 1e-6 < e.y && (r.top = i._4Z(e.x, 0, e[Ht], e.y, s)), 1e-6 < i[Xt] - e[Ft] && (r[Ft] = i._4Z(e.x, e[Ft], e.width, i[Xt] - e[Ft], s)),
            function (t) {
              var i = !0;
              for (var n in t) {
                i = !1;
                break
              }
              return i
            }(r) || h._4U(r);
          var a = i._jB(t.x, t.y),
            o = (a[0] - e.x) * s,
            f = (a[1] - e.y) * s,
            c = e[Ht] * s,
            u = e[Xt] * s;
          o = Math[Vh](o), f = Math.round(f), c = Math.round(c), u = Math[Vh](u);
          var _ = this[fd];
          return _ || ((_ = this[fd] = x.createElement(Ur)).g = _[Ql](Yr)), _[Ht] = c, _.height = u, dG(_.g), _.g[vo](n, o, f), {
            x: o = a[0] * s - o,
            y: f = a[1] * s - f,
            canvas: _
          }
        }
      }
    },
    _nI: function (t, i, n, e) {
      this[cl]._nT(t, i, n, e)
    },
    _hP: function (t) {
      this[cl]._jR(t)
    }
  });

  function dG(t) {
    t[_G = _G || ("imageSmoothingEnabled" in CanvasRenderingContext2D[_] ? "imageSmoothingEnabled" : "mozImageSmoothingEnabled" in CanvasRenderingContext2D.prototype ? "mozImageSmoothingEnabled" : "msImageSmoothingEnabled" in CanvasRenderingContext2D[_] ? "msImageSmoothingEnabled" : "webkitImageSmoothingEnabled" in CanvasRenderingContext2D[_] ? "webkitImageSmoothingEnabled" : "imageSmoothingEnabled")] = !1
  }
  Object[J](lG[_], {
    width: {
      get: function () {
        return this[Yl][Kn]
      }
    },
    height: {
      get: function () {
        return this[Yl][cd]
      }
    },
    rotate: {
      get: function () {
        return this._l7._fJ()
      }
    },
    tx: {
      get: function () {
        return this._l7._94()[0]
      }
    },
    ty: {
      get: function () {
        return this._l7._94()[1]
      }
    },
    ratio: {
      get: function () {
        if (this._k9) return this._k9[jr]
      }
    },
    scale: {
      get: function () {
        return this._l7._i3()
      },
      set: function (t) {
        this._hI(t)
      }
    },
    renderScale: {
      get: function () {
        return this.scale * this[jr]
      }
    },
    uis: {
      get: function () {
        return this._o0
      }
    },
    length: {
      get: function () {
        return this._o0[N]
      }
    },
    viewportBounds: {
      get: function () {
        return this._viewport[ud]()
      }
    }
  });
  var vG = YC({
    constructor: function () {
      this._hS = [], this._kL = new WN, this._hQ = zC ? 20 : 50
    },
    _hQ: 20,
    _hS: null,
    _nK: !1,
    _kL: null,
    _mC: function () {
      this._nK = !1, this._hS[N] = 0, this._viewportClips = null, this._kL[Ot]()
    },
    _jP: function () {
      return 0 == this._hS[N] && !this[_d]
    },
    _nT: function (t, i, n, e) {
      n <= 0 || e <= 0 || this._hS[D]([t, i, n, e])
    },
    _jR: function (t) {
      this._nT(t.x, t.y, t.width, t[Xt])
    },
    _4U: function (t) {
      var i = this._kL;
      for (var n in t) {
        var e = t[n].getGlobalBounds();
        i.add(e)
      }
      this._viewportClips = t
    },
    _oB1: function (t, i) {
      for (var n = [], e = this._hS, s = 0, h = e[N]; s < h; s++) {
        var r = e[s];
        t.intersects(r[0], r[1], r[2], r[3]) && (n[D](r), this._kL.addRect(r[0], r[1], r[2], r[3]))
      }
      this._hS = n, this._nK = i || n.length >= this._hQ
    },
    _fG: function (t, i, n, e) {
      if (!this._kL.intersectsRect(t, i, n, e)) return !1;
      if (this._nK) return !0;
      if (this[_d]) {
        var s = this._viewportClips;
        for (var h in s)
          if (s[h][ml](t, i, n, e)) return !0
      }
      for (var r, a = 0, o = this._hS[N]; a < o; a++)
        if (r = this._hS[a], WN.intersects(t, i, n, e, r[0], r[1], r[2], r[3])) return !0;
      return !1
    },
    _lB: function (t, i) {
      if (this._jP()) return !1;
      if (t[Ca](), this._nK) return bG(t, (r = i([this._kL.x, this._kL.y, this._kL.width, this._kL[Xt]]))[0], r[1], r[2], r[3]), void t[Sa]();
      if (this[_d])
        for (var n in this._viewportClips) bG(t, (r = this[_d][n].canvasBounds)[0], r[1], r[2], r[3]);
      for (var e = this._hS, s = 0, h = e[N]; s < h; s++) {
        var r;
        bG(t, (r = i(e[s]))[0], r[1], r[2], r[3])
      }
      t[Sa]()
    }
  });

  function bG(t, i, n, e, s) {
    e = pN(i + e) - (i = mN(i)), s = pN(n + s) - (n = mN(n)), t.clearRect(i, n, e, s), t[zh](i, n, e, s)
  }

  function mN(t) {
    return Math.floor(t)
  }

  function pN(t) {
    return Math.ceil(t)
  }
  vG[ld] = function (t, i, n, e) {
    return t instanceof Object && (i = t.y, n = t[Ht], e = t[Xt], t = t.x), n = pN(t + n) - (t = mN(t)), e = pN(i + e) - (i = mN(i)), [t, i, n, e]
  }, vG[dd] = mN, vG._g4 = pN, zB[vd] = bd, zB[yd] = gd, IN[Ed] = zB.NAVIGATION_SCROLLBAR;
  var yG = YC({
    _kR: function () {
      WC(this, yG, xd, arguments), this[md]._kR()
    },
    _o8D: function (t, i) {
      return (t = t[Eu][Al] || 0) - (i.$data[Al] || 0)
    },
    super: lG,
    constructor: function (t, i) {
      this._lZ = t, vN(i) && (i = x[Ul](i)), i && i[ih] || (i = x[Bn](Fn)), UC(this, yG, [i]), this[md] = new ZH(this, this[Yl]), this._hW = [], this._lZ._$a[Zi](this._1M, this), this._lZ._1I.addListener(this[pd], this), this._lZ._13[Zi](this._81, this), this._lZ._$k.addListener(this._2V, this), this._lZ._$o.addListener(this._3V, this), this._oB4 = {}, this._41(IN[Ed], !0)
    },
    _5Z: function (t) {
      WC(this, yG, Md, arguments), this[md]._5Z(t)
    },
    _hU: function (t) {
      if (t.id || (t = this._o0.getById(t)), !t) return !1;
      this._o0.remove(t), t[ms](), t.__kL && this._hP(t[hd]), this[ad] = !0
    },
    _hV: function () {
      this._o0.forEach(function (t) {
        t[ms]()
      }), this._o0[Ot]()
    },
    _f8: function (t, i) {
      var n = t[bn] || t;
      return n._$p && (n._$p = !1, n._j9 = this._5U(n, i)), !1 !== n._j9
    },
    _5U: function (t, i) {
      return !(!this._3S(t, i) || this._lZ[wd] && !1 === this._lZ[wd](t, i))
    },
    _o8L: function (t) {
      return this._lZ._3H == FH(t)
    },
    _3S: function (t, i) {
      if (!1 === t[Wl]) return !1;
      if (!(t instanceof GG)) return this._lZ._3H == FH(t) && !t._eK;
      var n = t[Td],
        e = t[Od];
      if (!n || !e) return !1;
      if (n == e && !t[Ad]()) return !1;
      if (t.isBundleEnabled()) {
        var s = t[Sd](!0);
        if (s && !s._f8(t, i)) return !1
      }
      return !(!this._f8(n, i) || !this._f8(e, i))
    },
    _oAW: function (t) {
      if (t[xe]) return {
        x: t.$x + t.uiBounds.x,
        y: t.$y + t.uiBounds.y,
        width: t[Dd][Ht],
        height: t[Dd][Xt]
      }
    },
    _2T: function (t) {
      var i = this._m1(t);
      if (i) {
        var n = this[Tl](i);
        if (n) return new WN(n)
      }
    },
    _f7: function (t, i, n) {
      return t[Do](i[0], i[1], n)
    },
    hitTest: function (t, i) {
      var n = WC(this, yG, Do, arguments);
      if (n) {
        t = this[nd](t), i = this._o8H(i);
        var e = n[Do](t[0], t[1], i, !0);
        if (e instanceof nH) return e
      }
      return n
    },
    _3T: function (t) {
      return this[Id](t)
    },
    _7R: function (t) {
      WC(this, yG, Ld, arguments), this[md]._jD(this[Ht], this[Xt])
    },
    _mE: 1,
    _dJ: null,
    _92: null,
    _93: null,
    _o0: null,
    _o1: null,
    _k9: null,
    _oB2: null,
    _6W: !1,
    _oAE: !1,
    _l7: null,
    _4R: function (t, i) {
      for (var n = this._dJ, e = 0, s = n[N]; e < s; e++)
        if (!1 === t[m](i, n[e])) return !1
    },
    _f9: function (t, i) {
      this._o0.forEach(t, i)
    },
    _$y: function (t, i) {
      for (var n = this._dJ, e = n[N] - 1; 0 <= e; e--)
        if (!1 === t[m](i, n[e])) return !1
    },
    _4S: function (t, i) {
      this._o0[od](t, i)
    },
    _3J: function (t, i, n) {
      WC(this, yG, Rd, arguments), this[Pd] = {
        value: t
      }
    },
    _dL: function () {
      this._4P(!0), this[kd] || (this[kd] = !0, this._lZ && this._lZ.originAtCenter && this._l7[Cd]([this.width / 2, this.height / 2]))
    },
    _gF: function () {
      if (!this[Pu] && this._6W) {
        if (this[bl] = null, this._6W = !1, this._oAE && this._lZ && this._lZ._$p && (this._lZ._$p = !1, this._lZ[At](function (t) {
            t[Nd](!0)
          })), WC(this, yG, Bd, arguments), this[Fd]) {
          this._84 && this._84._kS();
          var t = this[Fd][O],
            i = this._93Changed.old;
          this[Fd] = null, this._lZ._50(new iB(this._lZ, $d, t, i))
        }
        this._viewportChanged && (this[Pd] = !1, this._84 && this._84._3J && this._84._3J(this[kl][Ht] * this[kl][wo], this[kl][Xt] * this[kl][wo]), this._lZ._50(new iB(this._lZ, vl, this._viewport)))
      }
    },
    _hW: null,
    _dO: function (t) {
      var i = t[Eu];
      if (!t._1L && !i._6W && !i._$p) return !1;
      var n = t[Jc];
      return WC(this, yG, Gd, arguments) || n
    },
    _o8J: function (t) {
      var i = t[Eu];
      i[Hd] && (i[Hd] = !1, t._4D()), i.__6W && i._j8() && (t._5X(), i[Dn] = !1), (t._1L || i._6W) && (i._6W = !1, t[Ya]())
    },
    _hX: function (t, i) {
      var n = t.ratio;
      t.scale(n, n), t[Gl][d](t, this._l7.m);
      for (var e = this.renderScale, s = [], h = 0, r = i[N]; h < r; h++) {
        var a = i[h];
        a._kR(t, e), a._kJ && a._kJ[N] && s[D](a)
      }
      if (s[N])
        for (h = 0, r = s[N]; h < r; h++) s[h]._9U(t, e)
    },
    render: function (t, i) {
      if (i.length) {
        if (t[Ta](), zC) try {
          this._hX(t, i)
        } catch (t) {} else this._hX(t, i);
        t[Ba]()
      }
    },
    _hY: function (t, i, n) {
      var e, s;
      t[Ta](), t[Aa](-n.x * i, -n.y * i), t[wo](i, i);
      for (var h = this._o0._kH[L](), r = [], a = 0, o = (h = this._jN(h)).length; a < o; a++)(e = h[a])[xl] && (s = this._oAW(e), n[Qt](s.x, s.y, s.width, s[Xt]) && (e._kR(t, i), e._kJ && e._kJ[N] && r[D](e)));
      if (r[N])
        for (a = 0, o = r.length; a < o; a++) r[a]._9U(t, i);
      t[Ba]()
    },
    _12: function (t, i) {},
    _1T: function () {
      for (var t, i, n = this._o0._kH, e = new WN, s = n[N] - 1; 0 <= s; s--)(t = n[s])._j9 && (i = t[Dd], e[Kt](t.$x + i.x, t.$y + i.y, i[Ht], i[Xt]));
      var h = this._93;
      (this._93 = e)[ti](h) || this._12(h, e)
    },
    _6B: function () {
      this._dJ[N] = 0, this._92 = {}
    },
    _mG: function () {
      this._mC()
    },
    _iW: function () {
      this._mC(), this._iWed = !0, this._6W = !1, this[md][Ot](), this._91[N] = 0, this._84 && (this._84._iW(), delete this._84)
    },
    _m1: function (t) {
      return this._o0[wt](t.id || t)
    },
    _$f: function (t) {
      return this._fH(t)
    },
    _i0: function (t, i) {
      var n = this.toCanvas(t, i);
      return {
        x: n[0],
        y: n[1]
      }
    },
    _fH: function (t, i) {
      var n = this[nd](t, i);
      return {
        x: n[0],
        y: n[1]
      }
    },
    _$g: null,
    _3V: function (t) {
      var i = t.source,
        n = t[bn];
      if (n)
        if (this._oAE) {
          if (bN(n))
            for (h = 0, r = n.length; h < r; h++) s = n[h].id, (e = this._o0[wt](s)) && (e[Xd] = i[mt](s), e[Wd]());
          else {
            if (s = n.id, !(e = this._o0[wt](s))) return;
            e[Xd] = i[mt](s), e[Wd]()
          }
          this._d0()
        } else {
          var e, s;
          if (this._$g || (this._$g = {}), bN(n))
            for (var h = 0, r = n[N]; h < r; h++) s = n[h].id, this._$g[s] = !0;
          else s = n.id, this._$g[s] = !0
        }
    },
    _lZ: null,
    _dQ: function (t) {
      var i = t[Ud];
      if (i) return new i(t, this._lZ)
    },
    _1M: function (t) {
      if (!this[xe]) return !1;
      var i = t[pi],
        n = t.kind;
      Yd == n && this._lZ[Nd](), Ud == n ? (this._hU(i.id), this._lU(i)) : jd == n && i._j8() && t[O] && this._6C(i);
      var e = this._o0[wt](i.id);
      e && e[xe] && e[Zd](t) && this._d0()
    },
    _3X: function (t) {
      var i = this._m1(t);
      i && (i[Qd](), this._d0())
    },
    _o87: function (t) {
      if (!this._oAE) return !1;
      switch (t.kind) {
        case fB[vn]:
          this._lU(t[bn]);
          break;
        case fB[nn]:
          this._i2(t[bn]);
          break;
        case fB[xn]:
          this._jT(t[bn])
      }
    },
    _mC: function () {
      this._oB4 = {}, this._hV(), this[Ot]()
    },
    _oB4: null,
    _lU: function (t) {
      var i = this._dQ(t);
      i && (this._o0.add(i), this[xe] && (this[Vd][t.id] = t), this._d0())
    },
    _i2: function (t) {
      if (Array.isArray(t)) {
        for (var i, n = [], e = 0, s = t[N]; e < s; e++) i = t[e].id, n[D](i), delete this[Vd][i];
        t = n
      } else t = t.id, delete this[Vd][t], t = [t];
      t[At](function (t) {
        this._hU(t)
      }, this), this._d0()
    },
    _jT: function (t) {
      this._mC()
    },
    _81: function (t) {
      if (!this[xe]) return !1;
      t[pi] instanceof UG && !this._oB4[t[pi].id] && (t.oldValue && (this._3X(t[Si]), t[Si][Dn] = !0), t.value && (this._3X(t[O]), t[O][Dn] = !0), this._6C(t[pi]))
    },
    _2V: function (t) {
      if (!this[xe]) return !1;
      t[pi] instanceof UG && !this[Vd][t.source.id] && this._6C(t[pi])
    },
    _2X: function (t) {
      if (t[Kd]) {
        var i = t[Sd](!0);
        if (!i) return t._edgeBundleInvalidateFlag = !1, void t.validateEdgeBundle();
        i[Ya](this._lZ), i._oBD(function (t) {
          t[zd]()
        })
      }
    },
    _$t: function (t) {
      this._lZ;
      var i, n = this._lZ.graphModel,
        e = this._o0,
        s = [],
        h = 1;
      if (n[Jd](function (t) {
          if (t instanceof GG) return this._2X(t), void s[D](t);
          (l = this._dQ(t)) && (e.add(l), t[qd] = h++)
        }, this), e[N]) {
        var r = e._kH;
        for (h = r.length - 1; 0 <= h; h--) l = r[h], this._3Z(l, l[Eu], t)
      }
      h = 0;
      for (var a = s[N]; h < a; h++)
        if (i = s[h], l = this._dQ(i)) {
          this._3Z(l, i, t), e.add(l);
          var o = i.fromAgent,
            f = i[Od],
            c = o[qd] || 0;
          o != f && (c = Math.max(c, f[qd] || 0)), i[qd] = c
        } if (s[N] && e._kH.sort(function (t, i) {
          return t[Eu][qd] - i.$data.__m4
        }), this._$g) {
        var u = n[tv];
        for (var _ in this._$g) {
          var l;
          u[mt](_) && (l = e.getById(_)) && (l[Xd] = !0)
        }
        this._$g = null
      }
      this._7W()
    },
    _oAX: function (t, i) {
      if (t) return this._$t();
      var n, e, s = this[ad];
      for (var h in this[ad] = !1, this._oB4) {
        var r = this._oB4[h];
        r instanceof UG ? this._6C(r) : this._6D(r)
      }
      this[Vd] = {};
      for (var a = this._o0._kH, o = [], f = a.length - 1; 0 <= f; f--)(e = (n = a[f])[Eu]) instanceof GG ? (this._2X(e), o[D](n)) : this._3Z(n, e, i) && !s && (s = !0);
      if (o.length) {
        f = 0;
        for (var c = o.length; f < c; f++) n = o[f], this._3Z(n, n[Eu], i) && !s && (s = !0)
      }
      s && this._7W()
    },
    _3Z: function (t, i, n) {
      if (i instanceof GG) return i[Hd] && (i[Hd] = !1, t._4D()), this._dO(t, n);
      if (i[Dn] && i._j8() && (t._5X(), i[Dn] = !1), this._dO(t, n)) {
        var e = this._4X(i);
        return e && (e[Dn] = !0), i[iv]() && i[nv](function (t) {
          t[Hd] = !0
        }, this), !0
      }
    },
    _2Z: function (t, i) {
      var n = t[Td],
        e = t[Od],
        s = i.getIndexById(n.id);
      if (n == e) return s;
      var h = i[ev](e.id);
      return Math.max(s, h)
    },
    _30: function (t, i) {
      var n = this[sv]._gO(t);
      return n ? i.getIndexById(n.id) : 0
    },
    _6C: function (t) {
      var i = this._o0,
        n = i.getById(t.id);
      if (!n) throw new Error(hv + t[T] + rv);
      var e = this._30(t, i),
        s = [n];
      t.hasChildren() && AC(t, function (t) {
        t instanceof UG && (n = i[wt](t.id)) && s.push(n)
      }, this), this._4V(i, e, s)
    },
    _6D: function (t) {
      var i = this._o0[wt](t.id);
      if (i) {
        var n = this._2Z(t, this._o0);
        this._o0.setIndexBefore(i, n)
      }
    },
    _4V: function (i, n, t) {
      var e = new LN;

      function s(t) {
        e.add(t)
      }
      PC(t, function (t) {
        n = i[av](t, n), t[Eu].forEachEdge(s)
      }, this), 0 != e[N] && e[At](this._6D, this)
    },
    _4X: function (t) {
      var i = BG(t);
      return i && i[jd] ? i : null
    },
    _83: null,
    _84: null,
    _41: function (t, i) {
      if (!i && t == this._83) return !1;
      this._83 = t, this._84 && (this._84._iW(), delete this._84), t != zB.NAVIGATION_SCROLLBAR ? t != zB[vd] || (this._84 = new UH(this, this[Yl])) : this._84 = new YH(this, this._oAU)
    },
    _2R: function (t, i) {
      this._84 && this._84._kS(), this._lZ._50(new iB(this._lZ, Gl, t, i))
    },
    _7Z: function (t, i) {
      this._lZ._50(new iB(this._lZ, wo, t, i))
    },
    _3R: function (t, i) {
      this[Fd] = {
        value: t,
        old: i
      }
    },
    _86: function () {
      this._7O()
    }
  });
  Object[J](yG[_], {
    _viewportBounds: {
      get: function () {
        return this[ov]
      }
    },
    _scale: {
      get: function () {
        return this.scale
      },
      set: function (t) {
        this._hI(t)
      }
    },
    _tx: {
      get: function () {
        return this.tx
      }
    },
    _ty: {
      get: function () {
        return this.ty
      }
    },
    graphModel: {
      get: function () {
        return this._lZ[fv]
      }
    }
  });
  var gG = lG,
    EG = {};

  function xG(t) {
    var n = [];
    return t[At](function (t, i) {
      n[D](-t)
    }), n
  }
  EG[cv] = function () {
    return [1, 0, 0, 1, 0, 0]
  }, EG[Bl] = function (t, i) {
    var n = i[0],
      e = i[1],
      s = i[2],
      h = i[3],
      r = i[4],
      a = i[5],
      o = n * h - e * s;
    return o ? (o = 1 / o, t[0] = h * o, t[1] = -e * o, t[2] = -s * o, t[3] = n * o, t[4] = (s * a - h * r) * o, t[5] = (e * r - n * a) * o, t) : null
  }, EG[Gf] = function (t, i, n) {
    var e = i[0],
      s = i[1],
      h = i[2],
      r = i[3],
      a = i[4],
      o = i[5],
      f = n[0],
      c = n[1],
      u = n[2],
      _ = n[3],
      l = n[4],
      d = n[5];
    return t[0] = e * f + h * c, t[1] = s * f + r * c, t[2] = e * u + h * _, t[3] = s * u + r * _, t[4] = e * l + h * d + a, t[5] = s * l + r * d + o, t
  }, EG.mul = EG.multiply, EG[It] = function (t, i, n) {
    var e = i[0],
      s = i[1],
      h = i[2],
      r = i[3],
      a = i[4],
      o = i[5],
      f = Math.sin(n),
      c = Math.cos(n);
    return t[0] = e * c + h * f, t[1] = s * c + r * f, t[2] = e * -f + h * c, t[3] = s * -f + r * c, t[4] = a, t[5] = o, t
  }, EG[wo] = function (t, i, n) {
    var e = i[0],
      s = i[1],
      h = i[2],
      r = i[3],
      a = i[4],
      o = i[5],
      f = n[0],
      c = n[1];
    return t[0] = e * f, t[1] = s * f, t[2] = h * c, t[3] = r * c, t[4] = a, t[5] = o, t
  }, EG[Aa] = function (t, i, n) {
    var e = i[0],
      s = i[1],
      h = i[2],
      r = i[3],
      a = i[4],
      o = i[5],
      f = n[0],
      c = n[1];
    return t[0] = e, t[1] = s, t[2] = h, t[3] = r, t[4] = e * f + h * c + a, t[5] = s * f + r * c + o, t
  }, EG.transform = function (t, i) {
    var n = i[0],
      e = i[1];
    return [n * t[0] + e * t[2] + t[4], n * t[1] + e * t[3] + t[5]]
  }, EG.reverseTransform = function (t, i) {
    return EG[Gl](EG[Bl]([], t), i)
  };
  var mG = Math.PI + Math.PI;

  function pG(t) {
    return (t %= mG) < 0 && (t += mG), t
  }
  var MG = dN,
    wG = YC({
      equals: function (t) {
        if (!t || !Array[$](t)) return !1;
        for (var i = this.m, n = 0; n < i[N];) {
          if (i[n] != t[n]) return !1;
          ++n
        }
        return !0
      },
      constructor: function (t) {
        this.m = t || EG[cv](), this.im = []
      },
      listener: null,
      _6W: !0,
      invalidate: function () {
        return this._6W = !0, (!this[uv] || !this[ti](this[uv])) && (this[Xi] && this[Xi]({
          target: this,
          kind: ll
        }), this[uv] = this.m[L](), this)
      },
      validate: function () {
        return this._6W = !1, EG[Bl](this.im, this.m), this
      },
      translate: function (t, i) {
        return MG(t) && (t = [t, i], i = arguments[2]), !1 !== i ? (this.m[4] += t[0], this.m[5] += t[1]) : EG.translate(this.m, this.m, t), this[ll]()
      },
      translateTo: function (t, i) {
        return MG(t) && (t = [t, i], i = arguments[2]), i && (i /= this._i3(), EG.scale(this.m, this.m, [i, i])), this.m[4] = t[0], this.m[5] = t[1], this[ll]()
      },
      scale: function (t, i) {
        return F == typeof t && (t = [t, t]), i ? (EG[Aa](this.m, this.m, i), EG[wo](this.m, this.m, t), EG[Aa](this.m, this.m, xG(i))) : EG.scale(this.m, this.m, t), this[ll]()
      },
      rotate: function (t, i) {
        return i ? (EG[Aa](this.m, this.m, i), EG[It](this.m, this.m, t), EG[Aa](this.m, this.m, xG(i))) : EG.rotate(this.m, this.m, t), this[ll]()
      },
      transform: function (t) {
        return EG[Gl](this.m, t)
      },
      reverseTransform: function (t) {
        return EG[Gl](this._4Y(), t)
      },
      toString: function () {
        return Hl + this.m[Q_](Z) + V
      },
      _4Y: function () {
        return this._6W && this.validate(), this.im
      },
      _fI: function () {
        var t = this.m[0],
          i = this.m[1],
          n = this.m[2],
          e = this.m[3];
        return [Math[Lt](t * t + n * n), Math[Lt](i * i + e * e)]
      },
      _i3: function () {
        var t = this.m[0],
          i = this.m[2];
        return Math.sqrt(t * t + i * i)
      },
      _94: function () {
        return [this.m[4], this.m[5]]
      },
      _dR: function () {
        var t = this.m[0],
          i = this.m[1],
          n = this.m[2],
          e = this.m[3];
        return [pG(Math[Ct](i, e)), pG(Math.atan2(-n, t))]
      },
      _fJ: function () {
        return pG(Math[Ct](this.m[1], this.m[3]))
      }
    });

  function TG(t, i, n, e, s, h, r, a) {
    var o = ((t * e - i * n) * (s - r) - (t - n) * (s * a - h * r)) / ((t - n) * (h - a) - (i - e) * (s - r)),
      f = ((t * e - i * n) * (h - a) - (i - e) * (s * a - h * r)) / ((t - n) * (h - a) - (i - e) * (s - r));
    if (isNaN(o) || isNaN(f)) return !1;
    if (n <= t) {
      if (!(n <= o && o <= t)) return !1
    } else if (!(t <= o && o <= n)) return !1;
    if (e <= i) {
      if (!(e <= f && f <= i)) return !1
    } else if (!(i <= f && f <= e)) return !1;
    if (r <= s) {
      if (!(r <= o && o <= s)) return !1
    } else if (!(s <= o && o <= r)) return !1;
    if (a <= h) {
      if (!(a <= f && f <= h)) return !1
    } else if (!(h <= f && f <= a)) return !1;
    return !0
  }

  function OG(t, i, n, e) {
    return [t * e - i * n, t * n + i * e]
  }
  var AG = YC({
      constructor: function () {},
      x: 0,
      y: 0,
      width: 0,
      height: 0,
      rotate: 0,
      set: function (t, i, n, e, s, h) {
        return this.x = t, this.y = i, this[Ht] = n, this[Xt] = e, this.rotate = s, this[Nt] = Math.cos(s), this[Bt] = Math.sin(s), this[wo] = h, this[_v] = null, this
      },
      _jB: function (t, i) {
        return t -= this.x, i -= this.y, this[It] ? OG(t, i, this._sin, this._oBos) : [t, i]
      },
      _95: function (t) {
        var i = new WN;
        return i.add(this._jB(t.x, t.y)), i.add(this._jB(t.x + t.width, t.y)), i.add(this._jB(t.x, t.y + t[Xt])), i.add(this._jB(t.x + t[Ht], t.y + t[Xt])), i
      },
      _i4: function (t, i) {
        if (this.rotate) {
          var n = OG(t, i, Math.sin(-this.rotate), Math.cos(-this[It]));
          t = n[0], i = n[1]
        }
        return [this.x + t, this.y + i]
      },
      _6E: function (t, i) {
        var n = this._jB(t, i);
        return t = n[0], i = n[1], 0 <= t && 0 <= i && t <= this.width && i <= this[Xt]
      },
      intersects: function (t, i, n, e) {
        if (!this.rotate) return WN.intersects(this.x, this.y, this[Ht], this.height, t, i, n, e);
        if (!n || !e) return this._6E(t, i);
        var s = this[ud]();
        if (!s.intersects(t, i, n, e)) return !1;
        for (var h = s[ps], r = 0; r < h[N];) {
          var a = h[r];
          if (WN.intersectsPoint(t, i, n, e, a[0], a[1])) return !0;
          r++
        }
        var o = [
          [t, i],
          [t + n, i],
          [t, i + e],
          [t + n, i + e]
        ];
        for (r = 0; r < o[N];) {
          if (a = o[r], this._6E(a[0], a[1])) return !0;
          r++
        }
        return function (t, i) {
          for (var n = 0, e = t[N]; n < e;) {
            for (var s = t[n], h = t[(n + 1) % e], r = 0; r < 4;) {
              var a = i[r],
                o = i[(r + 1) % e];
              if (TG(s[0], s[1], h[0], h[1], a[0], a[1], o[0], o[1])) return !0;
              r++
            }
            n++
          }
          return !1
        }(h, o)
      },
      getGlobalBounds: function () {
        return this[_v] || (this[_v] = this._87(0, 0, this[Ht], this[Xt])), this[_v]
      },
      _87: function (t, i, n, e) {
        if (!this[It]) return new WN(this.x + t, this.y + i, n, e);
        var s = [],
          h = new WN,
          r = this._i4(t, i);
        return s.push(r), h.add(r[0], r[1]), r = this._i4(t + n, i), s[D](r), h.add(r[0], r[1]), r = this._i4(t, i + e), s[D](r), h.add(r[0], r[1]), r = this._i4(t + n, i + e), s[D](r), h.add(r[0], r[1]), h[ps] = s, h
      },
      _4Z: function (t, i, n, e, s) {
        var h;
        if (this.rotate) {
          var r = this._i4(t, i);
          h = (new AG).set(r[0], r[1], n, e, this[It], this.scale)
        } else h = (new AG).set(this.x + t, this.y + i, n, e, 0, this.scale);
        return h[lv] = [Math.round(s * t), Math[Vh](s * i), Math.round(s * n), Math[Vh](s * e)], h
      },
      _43: function (t, i, n, e) {
        if (!this.rotate) {
          var s = WN.intersection(this.x, this.y, this[Ht], this.height, t, i, n, e);
          return s && s[ca](-this.x, -this.y), s
        }
        var h = this._jB(t, i);
        return t = h[0], i = h[1], WN.intersection(0, 0, this.width, this.height, h[0], h[1], n, e)
      },
      equals: function (t) {
        return this.x == t.x && this.y == t.y && this.width == t.width && this[Xt] == t[Xt] && this.rotate == t.rotate
      },
      toString: function () {
        return this.x + Z + this.y + Z + this[Ht] + Z + this.height + Z + this.rotate
      },
      toJSON: function () {
        return {
          x: this.x,
          y: this.y,
          width: this.width,
          height: this[Xt],
          rotate: this[It],
          scale: this.scale
        }
      }
    }),
    SG = {
      setStyle: EB,
      setStyles: gB,
      addRule: xB,
      pre: yB
    };

  function DG(t, i, n) {
    if ((n = n || i[Od]) == t) return !1;
    var e = t[Sd](n);
    return e || (e = new GX(t, n), t[dv][n.id] = e), e._k1(i, t)
  }

  function IG(t, i, n) {
    if ((n = n || i[Od]) == t) return !1;
    var e = t[Sd](n);
    return e ? e._dZ(i, t) : void 0
  }

  function LG(t, i, n) {
    if (n === I && (n = i[Od]), n != t) {
      if (t._8L || (t._8L = new LN), !1 === t._8L.add(i)) return !1;
      t._9M++
    }
  }

  function RG(t, i, n) {
    if (!t._8L || !1 === t._8L[en](i)) return !1;
    t._9M--, IG(t, i, n)
  }

  function PG(t, i) {
    if (i[Td] != t) {
      if (t._9O || (t._9O = new LN), !1 === t._9O.add(i)) return !1;
      t._oA8++
    }
  }

  function kG(t, i) {
    if (!t._9O || !1 === t._9O[en](i)) return !1;
    t[vv]--, IG(i[Td], i, t)
  }

  function CG(t, i, n, e) {
    this.source = t, this[wi] = i, this[Si] = e, this[O] = n, this[Di] = zB[bv]
  }

  function NG(t) {
    this.id = ++QC, this[rn] = {}, this._kF = {}, t && (this.$name = t)
  }

  function BG(t, i) {
    if (i === I && (i = t instanceof GG), i) {
      if (t[yv]()) return null;
      var n = BG(t.from, !1);
      if (t[Ad]()) return n;
      for (var e = BG(t.to, !1); null != n && null != e;) {
        if (n == e) return n;
        if (n.isDescendantOf(e)) return e;
        if (e[gv](n)) return n;
        n = BG(n, !1), e = BG(e, !1)
      }
      return null
    }
    for (var s = t[Ci]; null != s;) {
      if (s._j8()) return s;
      s = s[Ci]
    }
    return null
  }

  function FG(t, i) {
    i[Ci] ? i.parent[Ev](i, i.parent[xv] - 1) : t[mv][pv](i, t[mv][N] - 1)
  }

  function $G(t, i) {
    i[Ci] ? i[Ci][Ev](i, 0) : t.roots[pv](i, 0)
  }
  GC(CG, iB), NG[_] = {
    _kF: null,
    getStyle: function (t) {
      return this._kF[t]
    },
    setStyle: function (t, i) {
      var n = this._kF[t];
      return !(n === i || n && i && n.equals && n[ti](i)) && this[on](t, i, new CG(this, t, i, n), this._kF)
    },
    putStyles: function (t, i) {
      for (var n in t) {
        var e = t[n];
        i ? this._kF[n] = e : this[$l](n, e)
      }
    },
    _$p: !0,
    invalidateVisibility: function (t) {
      this._$p = !0, t || (this instanceof UG && this[iv]() && this[nv](function (t) {
        t._$p = !0
      }), this._j8() && this[p]() && this.forEachChild(function (t) {
        t[Nd]()
      }))
    },
    onParentChanged: function (t, i) {
      this[Nd]()
    },
    _j8: function () {
      return !this._49 && this instanceof tH
    },
    invalidate: function () {
      this.onEvent(new tB(this, Mv, ll))
    },
    _oBS: null,
    addUI: function (t, i) {
      if (this._oBS || (this._oBS = new LN), t.id || (t.id = ++QC), this[wv].containsById(t.id)) return !1;
      var n = {
        id: t.id,
        ui: t,
        bindingProperties: i
      };
      this[wv].add(n);
      var e = new tB(this, Mv, tn, n);
      return this[Wi](e)
    },
    removeUI: function (t) {
      if (!this[wv]) return !1;
      var i = this[wv].getById(t.id || t);
      if (!i) return !1;
      this[wv][en](i), this.onEvent(new tB(this, Mv, en, i))
    },
    clearUIs: function () {
      this.bindingUIs && this[Tv].toDatas()[At](function (t) {
        this[Ov](t.ui)
      } [ns](this))
    },
    toString: function () {
      return this.$name || this.id
    },
    type: Av,
    _49: !1,
    _j9: !0,
    inGroup: function (t) {
      var i = BG(this);
      return i == t || i && t instanceof tH && i.isDescendantOf(t)
    }
  }, GC(NG, cB), ZC(NG[_], [Ud, T, Al, Sv]), TN(NG[_], {
    enableSubNetwork: {
      get: function () {
        return this._49
      },
      set: function (t) {
        if (this._49 != t) {
          var i = this._49;
          this._49 = t, this instanceof UG && this._10(), this.onEvent(new iB(this, Yd, t, i))
        }
      }
    },
    bindingUIs: {
      get: function () {
        return this._oBS
      }
    },
    styles: {
      get: function () {
        return this._kF
      },
      set: function (t) {
        if (this._kF != t) {
          for (var i in this._kF) i in t || (t[i] = I);
          this[Dv](t), this._kF = t
        }
      }
    }
  }), KB[Iv] = BG;
  var GG = function (t, i, n) {
    this.id = ++QC, this._oBU = {}, this._kF = {}, n && (this[Lv] = n), this[Rv] = t, this.$to = i, this.connect()
  };

  function HG(t, i) {
    return i = i || new LN, t.forEachEdge(function (t) {
      i.add({
        id: t.id,
        edge: t,
        fromAgent: t[Rv]._eK,
        toAgent: t.$to._eK
      })
    }), t.forEachChild(function (t) {
      t instanceof UG && HG(t, i)
    }), i
  }

  function XG(t, i, n) {
    if (t._gN)
      for (var e = t._gN; e;) {
        if (!1 === i[m](n, e)) return !1;
        e = e._jX
      }
  }

  function WG(t, i, n) {
    if (t._j3)
      for (var e = t._j3; e;) {
        if (!1 === i[m](n, e)) return !1;
        e = e._lD
      }
  }
  GG[_] = {
    $uiClass: MH,
    _lC: null,
    _jV: null,
    _lD: null,
    _jX: null,
    _fK: !1,
    type: Pv,
    otherNode: function (t) {
      return t == this[kv] ? this.to : t == this.to ? this[kv] : void 0
    },
    connect: function () {
      if (this._fK) return !1;
      if (!this[Rv] || !this.$to) return !1;
      if (this._fK = !0, this[Rv] != this.$to) {
        ! function (t, i) {
          if (t._oA8++, !t._j3) return t._j3 = i, t._kE = i;
          i._lC = t._kE, t._kE._lD = i, t._kE = i
        }(this.$to, this),
        function (t, i) {
          if (t._9M++, !t._gN) return t._gN = i, t._j4 = i;
          i._jV = t._j4, t._j4._jX = i, t._j4 = i
        }(this.$from, this), DG(this[Rv], this, this.$to);
        var t, i = this[Td],
          n = this[Od];
        i != n && (this.$from._eK && (LG(i, this, n), t = !0), this.$to._eK && (PG(n, this), t = !0), t && DG(i, this, n))
      } else this.$from._j6(this)
    },
    disconnect: function () {
      if (!this._fK) return !1;
      if (this._fK = !1, this.$from != this.$to) {
        h = this[Rv], r = this, h._9M--, h._j4 == r && (h._j4 = r._jV), r._jV ? r._jV._jX = r._jX : h._gN = r._jX, r._jX && (r._jX._jV = r._jV), r._jV = null, r._jX = null, IG(h, r, r.$to), e = this.$to, s = this, e[vv]--, e._kE == s && (e._kE = s._lC), s._lC ? s._lC._lD = s._lD : e._j3 = s._lD, s._lD && (s._lD._lC = s._lC), s._lC = null, s._lD = null, IG(this.$from, this, this.$to);
        var t, i = this[Td],
          n = this.toAgent;
        i != n && (this[Rv]._eK && (RG(i, this, n), t = !0), this.$to._eK && (kG(n, this), t = !0), t && IG(i, this, n))
      } else this[Rv][Cv](this);
      var e, s, h, r
    },
    isConnected: function () {
      return this._fK
    },
    isInvalid: function () {
      return !this[Rv] || !this.$to
    },
    isLooped: function () {
      return this.$from == this.$to
    },
    getEdgeBundle: function (t) {
      return t ? this._31() : this[Ad]() ? this[Rv]._48 : this[Rv].getEdgeBundle(this.$to)
    },
    hasEdgeBundle: function () {
      var t = this.getEdgeBundle(!0);
      return t && 1 < t[Nv][N]
    },
    _31: function () {
      var t = this[Td],
        i = this[Od];
      return t === i ? this[Rv]._eK || this.$to._eK ? null : this[Rv]._48 : t[Sd](i)
    },
    _o80: null,
    hasPathSegments: function () {
      return this._o80 && !this[Bv][Tt]()
    },
    isBundleEnabled: function () {
      return this.bundleEnabled && !this.hasPathSegments() && !this[Fv]
    },
    firePathChange: function (t) {
      this[Wi](new iB(this, $v, t))
    },
    addPathSegment: function (t, i, n) {
      var e = new a$(i || n$, t);
      this[Bv] || (this._o80 = new LN), this._o80.add(e, n), this[Gv](e)
    },
    addPathSegement: function () {
      return KB.log('change "edge.addPathSegement(...)" to "edge.addPathSegment(...)"'), this[Hv][d](this, arguments)
    },
    removePathSegmentByIndex: function (t) {
      return this[Xv](t)
    },
    removePathSegment: function (t) {
      if (!this._o80) return !1;
      dN(t) && (t = this[Bv].getByIndex(t)), t && (this[Bv][en](t), this[Gv](t))
    },
    movePathSegment: function (i, n, t) {
      if (!this[Bv]) return !1;
      if (i = i || 0, n = n || 0, KB.isNumber(t)) {
        var e = this[Bv][xt](t);
        return !!e && (e[Ns](i, n), void this[Gv]())
      }
      PC(function (t) {
        t[Ns](i, n)
      }), this[Gv]()
    },
    move: function (i, n) {
      if (!this._o80) return !1;
      this[Bv].forEach(function (t) {
        t[Ns](i, n)
      }, this), this[Gv]()
    },
    validateEdgeBundle: function () {}
  }, GC(GG, NG), TN(GG[_], {
    pathSegments: {
      get: function () {
        return this[Bv]
      },
      set: function (t) {
        KB[$](t) && (t = new LN(t)), this[Bv] = t, this.firePathChange()
      }
    },
    from: {
      get: function () {
        return this[Rv]
      },
      set: function (t) {
        if (this[Rv] != t) {
          var i = new iB(this, kv, t, this[Rv]);
          !1 !== this[w](i) && (this[Sn](), this[Rv] = t, this[Wv](), this[Wi](i))
        }
      }
    },
    to: {
      get: function () {
        return this.$to
      },
      set: function (t) {
        if (this.$to != t) {
          var i = new iB(this, Uv, t, this.$to);
          !1 !== this[w](i) && (this.disconnect(), this.$to = t, this[Wv](), this.onEvent(i))
        }
      }
    },
    fromAgent: {
      get: function () {
        return this[Rv] ? this.$from._eK || this.$from : null
      }
    },
    toAgent: {
      get: function () {
        return this.$to ? this.$to._eK || this.$to : null
      }
    }
  }), ZC(GG[_], [Fv, {
    name: Yv,
    value: !0
  }, $o]);
  var UG = function (t, i, n) {
    2 == arguments[N] && dN(t) && (n = i, i = t, t = null), this.id = ++QC, this._oBU = {}, this._kF = {}, t && (this[Lv] = t), this.$image = jv, this[Zv] = YN[_i], this.$location = {
      x: i || 0,
      y: n || 0
    }, this[dv] = {}
  };

  function YG(t, i) {
    i[At](function (t) {
      var i = t[Td],
        n = t[Od],
        e = (t = t[Qv])[Rv]._eK,
        s = t.$to._eK;
      i != n && (i && RG(i, t, n || t.$to), n && kG(n, t, i || t.$from)), e != s && (e && LG(e, t, s || t.$to), s && PG(s, t, e || t[Rv]), DG(e || t[Rv], t, s || t.$to))
    }, t)
  }
  UG[_] = {
    $uiClass: wH,
    _eK: null,
    forEachEdge: function (t, i, n) {
      return !(!n && this._lS && !1 === this._lS[At](t, i)) && !1 !== WG(this, e = t, s = i) && XG(this, e, s);
      var e, s
    },
    forEachOutEdge: function (t, i) {
      return XG(this, t, i)
    },
    forEachInEdge: function (t, i, n) {
      return WG(this, t, i)
    },
    getEdges: function () {
      var i = [];
      return this[nv](function (t) {
        i[D](t)
      }), i
    },
    _j3: null,
    _gN: null,
    _kE: null,
    _j4: null,
    _oA8: 0,
    _9M: 0,
    hasInEdge: function () {
      return null != this._j3
    },
    hasOutEdge: function () {
      return null != this._gN
    },
    hasEdge: function () {
      return null != this._j3 || null != this._gN || this[Vv]()
    },
    linkedWith: function (t) {
      return t[kv] == this || t.to == this || t[Td] == this || t.toAgent == this
    },
    hasEdgeWith: function (t) {
      var i = this[Sd](t);
      return i && 0 < i[Nv].length
    },
    _lS: null,
    _48: null,
    hasLoops: function () {
      return this._lS && 0 < this._lS.length
    },
    _j6: function (t) {
      return this._lS || (this._lS = new LN, this._48 = new GX(this, this, this._lS)), this._48._k1(t)
    },
    _oBQ: function (t) {
      if (this._48) return this._48._dZ(t)
    },
    getEdgeBundle: function (t) {
      return t == this ? this._48 : this[dv][t.id] || t[dv][this.id]
    },
    _72: function () {
      return this._9O && this._9O[N]
    },
    _5P: function () {
      return this._8L && this._8L[N]
    },
    _9N: function () {
      return this._72() || this._5P()
    },
    _8L: null,
    _9O: null,
    _oBR: function () {
      var t, i = this._eK,
        n = (t = this).parent ? (t = t[Ci])._eK ? t._eK : t instanceof tH && !1 === t._iD ? t : null : null;
      if (i != n) {
        var e = HG(this);
        this._9S(n), YG(this, e)
      }
    },
    onParentChanged: function (t, i) {
      KB[Kv](this, UG, un, arguments), this[zv]()
    },
    _8N: null,
    _10: function () {
      var t;
      if (this._49 ? t = null : (t = this._eK) || !1 !== this._iD || (t = this), this._8N == t) return !1;
      if (this._8N = t, this._gX && this._gX._kH.length)
        for (var i, n = this._gX._kH, e = 0, s = n[N]; e < s; e++)(i = n[e]) instanceof UG && i._9S(t)
    },
    setLocation: function (t, i) {
      if (this[Jv] && this[Jv].x == t && this[Jv].y == i) return !1;
      var n;
      n = this.$location ? {
        x: this[Jv].x,
        y: this.$location.y
      } : this[Jv];
      var e = new iB(this, k_, n, {
        x: t,
        y: i
      });
      return !1 !== this[w](e) && (this[Jv] ? (this[Jv].x = t, this[Jv].y = i) : this[Jv] = new CN(t, i), this[Wi](e), !0)
    },
    _eM: null,
    addFollower: function (t) {
      return null != t && (t[qv] = this)
    },
    removeFollower: function (t) {
      return !(!this._eM || !this._eM[jt](t)) && (t[qv] = null)
    },
    hasFollowers: function () {
      return this._eM && !this._eM.isEmpty()
    },
    toFollowers: function () {
      return this.hasFollowers() ? this._eM[Dt]() : null
    },
    clearFollowers: function () {
      this[tb]() && (this[ib](), PC(this.toFollowers(), function (t) {
        t[qv] = null
      }))
    },
    getFollowerIndex: function (t) {
      return this._eM && this._eM[jt](t) ? this._eM[b](t) : -1
    },
    setFollowerIndex: function (t, i) {
      if (!this._eM || !this._eM[jt](t)) return -1;
      this._eM.setIndex(t, i)
    },
    getFollowerCount: function () {
      return this._eM ? this._eM[N] : 0
    },
    _9Q: function () {
      return this._eM || (this._eM = new LN), this._eM
    },
    isFollow: function (t) {
      if (!t || !this[nb]) return !1;
      for (var i = this[nb]; i;) {
        if (i == t) return !0;
        i = i._host
      }
      return !1
    },
    _9S: function (t) {
      if (t == this._eK) return !1;
      this._eK = t, this[Nd](), this._10()
    },
    type: eb
  }, GC(UG, NG), TN(UG[_], {
    loops: {
      get: function () {
        return this._lS
      }
    },
    edgeCount: {
      get: function () {
        return this._oA8 + this._9M
      }
    },
    agentNode: {
      get: function () {
        return this._eK || this
      }
    },
    host: {
      set: function (t) {
        if (this == t || t == this[nb]) return !1;
        var i = new iB(this, qv, this[nb], t);
        if (!1 === this[w](i)) return !1;
        var n = null,
          e = null,
          s = this._host;
        return (null == t || (n = new iB(t, sb, null, this), !1 !== t[w](n))) && ((null == s || (e = new iB(s, hb, null, this), !1 !== s[w](e))) && (null != (this._host = t) && t._9Q().add(this), null != s && s._9Q()[en](this), this[Wi](i), null != t && t.onEvent(n), null != s && s.onEvent(e), !0))
      },
      get: function () {
        return this[nb]
      }
    }
  }), ZC(UG.prototype, [k_, dl, Io, It, rb]), TN(UG.prototype, {
    x: {
      get: function () {
        return this[k_].x
      },
      set: function (t) {
        t != this[k_].x && (this[k_] = new CN(t, this[k_].y))
      }
    },
    y: {
      get: function () {
        return this.location.y
      },
      set: function (t) {
        t != this.location.y && (this[k_] = new CN(this[k_].x, t))
      }
    }
  });
  var jG = function (t, i) {
    t instanceof o$ && (i = t, t = I), HC(this, jG, [t]), this[ab] = i || new o$, this.anchorPosition = null, this[Ud] = jH, IN.SHAPENODE_STYLES || (IN[ob] = {}, IN[ob][oH[fb]] = !1), this[Dv](IN[ob])
  };
  jG[_] = {
    $uiClass: jH,
    type: cb,
    moveTo: function (t, i) {
      this[ab][Ra](t, i), this[Gv]()
    },
    lineTo: function (t, i) {
      this.path[_a](t, i), this[Gv]()
    },
    quadTo: function (t, i, n, e) {
      this.path[ub](t, i, n, e), this.firePathChange()
    },
    curveTo: function (t, i, n, e, s, h) {
      this.path.curveTo(t, i, n, e, s, h), this[Gv]()
    },
    arcTo: function (t, i, n, e, s) {
      this.path[ua](t, i, n, e, s), this[Gv]()
    },
    closePath: function () {
      this[ab].closePath(), this.firePathChange()
    },
    clear: function () {
      this.path[Ot](), this[Gv]()
    },
    removePathSegmentByIndex: function (t) {
      !1 !== this[ab][Xv](t) && this.firePathChange()
    },
    firePathChange: function () {
      this.path._6W = !0, this[Wi](new iB(this, $v))
    },
    addPathSegment: function (t, i, n) {
      this.path.add(new a$(i || n$, t), n), this[Gv]()
    }
  }, GC(jG, UG), TN(jG[_], {
    path: {
      get: function () {
        return this[Io]
      },
      set: function (t) {
        this.image = t
      }
    },
    pathSegments: {
      get: function () {
        return this.path[_b]
      },
      set: function (t) {
        this.path[_b] = t || [], this.firePathChange()
      }
    },
    length: {
      get: function () {
        return this.path[N]
      }
    }
  }), KB[lb] = jG;
  var ZG = {
    _lF: {},
    register: function (t, i) {
      ZG._lF[t] = i
    },
    getShape: function (t, i, n, e, s, h) {
      e === I && (e = i, s = n, n = i = 0), e = e || 50, s = s || 50;
      var r = ZG._lF[t];
      if (r) return r[db] instanceof Function ? r.generator(i, n, e, s, h) : r
    },
    getRect: function (t, i, n, e, s, h, r) {
      return t instanceof Object && Ht in t && (i = t.y, n = t.width, e = t[Xt], s = t.rx, h = t.ry, r = t.path, t = t.x), QG(r || new o$, t, i, n, e, s, h)
    },
    getAllShapes: function (t, i, n, e, s) {
      var h = {};
      for (var r in ZG._lF) {
        var a = ZG[vb](r, t, i, n, e, s);
        a && (h[r] = a)
      }
      return h
    },
    createRegularShape: function (t, i, n, e, s) {
      return zG(t, i, n, e, s)
    }
  };

  function QG(t, i, n, e, s, h, r) {
    return h || r ? (h = h || 0, r = r === I ? h : r || 0, h = Math.min(h, e / 2), r = Math.min(r, s / 2), t[Ra](i + h, n), t[_a](i + e - h, n), t[ub](i + e, n, i + e, n + r), t[_a](i + e, n + s - r), t[ub](i + e, n + s, i + e - h, n + s), t[_a](i + h, n + s), t[ub](i, n + s, i, n + s - r), t[_a](i, n + r), t.quadTo(i, n, i + h, n)) : (t[Ra](i, n), t.lineTo(i + e, n), t.lineTo(i + e, n + s), t[_a](i, n + s)), t[va](), t
  }

  function VG(t, i, n, e, s) {
    i instanceof mF && (e = i[Ht], s = i[Xt], n = i.cy - s / 2, i = i.cx - e / 2);
    var h = e / 2 * .5522848,
      r = s / 2 * .5522848,
      a = i + e,
      o = n + s,
      f = i + e / 2,
      c = n + s / 2;
    return t[Ra](i, c), t[bb](i, c - r, f - h, n, f, n), t[bb](f + h, n, a, c - r, a, c), t.curveTo(a, c + r, f + h, o, f, o), t[bb](f - h, o, i, c + r, i, c), t
  }

  function KG(t, i, n, e, s, h) {
    return t[Ra](i, n), t[_a](i + e, n + s / 2), t.lineTo(i, n + s), h || (t[_a](i + .25 * e, n + s / 2), t.closePath()), t
  }

  function zG(t, i, n, e, s) {
    if (!t || t < 3) throw new Error("edge number must greater than 2");
    t |= 0, e = e || 50, s = s || 0, i = i || 0, n = n || 0;
    for (var h, r, a = 0, o = 2 * Math.PI / t, f = new o$; a < t;) h = i + e * Math.cos(s), r = n + e * Math.sin(s), a ? f.lineTo(h, r) : f[Ra](h, r), ++a, s += o;
    return f[va](), f
  }

  function JG(t, i) {
    HC(this, JG, arguments), this.busLayout = !0
  }

  function qG() {
    HC(this, qG), this._$u = new oB
  }! function () {
    var t, i, n, e, s, h, r, a, o, f, c, u, _, l, d;
    ZG[yb](zB[gb], VG(new o$, 0, 0, 100, 100)), ZG.register(zB[Eb], QG(new o$, 0, 0, 100, 100)), ZG.register(zB[xb], QG(new o$, 0, 0, 100, 100, 20, 20)), ZG.register(zB[mb], (i = 2 * 100, n = 2 * 100, e = 50 + 0, s = 50 + 0, (t = new o$).moveTo(e - i / 4, s - n / 12), t[_a](0 + .306 * 100, 57.9), t[_a](e - i / 6, s + n / 4), t[_a](50, 73.3), t[_a](e + i / 6, s + n / 4), t[_a](69.3, 57.9), t.lineTo(e + i / 4, s - n / 12), t[_a](61.1, 33.2), t[_a](0 + e, s - n / 4), t[_a](0 + .388 * 100, 33.2), t.closePath(), t)), ZG[yb](zB[pb], (r = 0, a = 100, (h = new o$)[Ra](0, r), h[_a](100, r + a / 2), h[_a](0, r + a), h[va](), h)), ZG[yb](zB[Mb], zG(5)), ZG[yb](zB.SHAPE_HEXAGON, zG(6)), ZG[yb](zB[wb], (f = 0, c = 100, (o = new o$).moveTo(0, f + c / 2), o.lineTo(50, f), o.lineTo(100, f + c / 2), o.lineTo(50, f + c), o[va](), o)), ZG.register(zB.SHAPE_HEART, ((u = new o$)[Ra](75, 40), u[bb](75, 37, 70, 25, 50, 25), u.curveTo(20, 25, 20, 62.5, 20, 62.5), u[bb](20, 80, 40, 102, 75, 120), u.curveTo(110, 102, 130, 80, 130, 62.5), u.curveTo(130, 62.5, 130, 25, 100, 25), u.curveTo(85, 25, 75, 37, 75, 40), u)), ZG.register(zB[Tb], ((_ = new o$)[Ra](20, 0), _.lineTo(80, 0), _.lineTo(100, 100), _[_a](0, 100), _[va](), _)), ZG[yb](zB[Ob], ((l = new o$)[Ra](100, 0), l[_a](100, 80), l[_a](0, 100), l.lineTo(0, 20), l[va](), l)), ZG[yb](zB[Ab], ((d = new o$)[Ra](20, 0), d[_a](100, 0), d.lineTo(80, 100), d[_a](0, 100), d[va](), d));
    var v, b, y, g, E, x, m, p, M = new o$;
    M.moveTo(20, 0), M[_a](40, 0), M[_a](40, 20), M[_a](60, 20), M[_a](60, 40), M[_a](40, 40), M[_a](40, 60), M[_a](20, 60), M[_a](20, 40), M[_a](0, 40), M.lineTo(0, 20), M[_a](20, 20), M[va](), ZG.register(zB[Sb], M), ZG[yb](zB.SHAPE_ARROW_STANDARD, KG(new o$, 0, 0, 100, 100)), ZG[yb](zB[Db], ((v = new o$)[Ra](43, 23), v[_a](28, 10), v[_a](37, 2), v.lineTo(63, 31), v[_a](37, 59), v.lineTo(28, 52), v[_a](44, 38), v.lineTo(3, 38), v[_a](3, 23), v[va](), v)), ZG[yb](zB[Ib], ((b = new o$).moveTo(1, 8), b[_a](7, 2), b.lineTo(32, 26), b[_a](7, 50), b[_a](1, 44), b[_a](18, 26), b[va](), b[Ra](27, 8), b.lineTo(33, 2), b[_a](57, 26), b[_a](33, 50), b[_a](27, 44), b[_a](44, 26), b[va](), b)), ZG.register(zB[Lb], ((y = new o$).moveTo(0, 15), y[_a](23, 15), y[_a](23, 1), y[_a](47, 23), y[_a](23, 43), y[_a](23, 29), y[_a](0, 29), y[va](), y)), ZG.register(zB[Rb], ((g = new o$)[Ra](0, 21), g[_a](30, 21), g[_a](19, 0), g[_a](25, 0), g.lineTo(47, 25), g.lineTo(25, 48), g.lineTo(19, 48), g[_a](30, 28), g.lineTo(0, 28), g.closePath(), g)), ZG.register(zB[Pb], ((E = new o$)[Ra](0, 0), E.lineTo(34, 24), E[_a](0, 48), E.lineTo(14, 24), E[va](), E)), ZG[yb](zB.SHAPE_ARROW_6, ((x = new o$)[Ra](20, 0), x[_a](34, 14), x.lineTo(20, 28), x[_a](22, 18), x.lineTo(1, 25), x[_a](10, 14), x.lineTo(1, 3), x.lineTo(22, 10), x[va](), x)), ZG[yb](zB.SHAPE_ARROW_7, ((m = new o$)[Ra](4, 18), m[_a](45, 18), m[_a](37, 4), m[_a](83, 25), m.lineTo(37, 46), m.lineTo(45, 32), m[_a](4, 32), m[va](), m)), ZG[yb](zB.SHAPE_ARROW_8, ((p = new o$)[Ra](17, 11), p[_a](27, 11), p.lineTo(42, 27), p.lineTo(27, 42), p[_a](17, 42), p[_a](28, 30), p.lineTo(4, 30), p[_a](4, 23), p[_a](28, 23), p.closePath(), p)), ZG[yb](zB.SHAPE_ARROW_OPEN, KG(new o$, 0, 0, 100, 100, !0))
  }(), JG[_] = {
    type: kb
  }, GC(JG, jG), KB.Bus = JG, qG[_] = {
    _gO: function (t) {
      var i, n = t._kP,
        e = (i = n ? n._gX : this.$roots)[b](t);
      if (e < 0) throw new Error(Ln + t + "' not exist in the box");
      for (; 0 <= e;) {
        if (0 == e) return n instanceof UG ? n : null;
        --e;
        var s = i.getByIndex(e);
        if (s = SC(s)) return s
      }
      return null
    },
    forEachNode: function (i, n) {
      this[At](function (t) {
        if (t instanceof UG && !1 === i.call(n, t)) return !1
      })
    },
    _3H: null
  }, GC(qG, _B), TN(qG[_], {
    propertyChangeDispatcher: {
      get: function () {
        return this._$u
      }
    },
    currentSubNetwork: {
      get: function () {
        return this._3H
      },
      set: function (t) {
        if (t && !t[Yd] && (t = null), this._3H != t) {
          var i = this._3H;
          this._3H = t, this._$u[Wi](new iB(this, Cb, t, i))
        }
      }
    }
  }), IN[Nb] = zB[Bb], IN.GROUP_PADDING = 5, IN.GROUP_EXPANDED = !0, IN.GROUP_MIN_SIZE = {
    width: 60,
    height: 60
  };
  var tH = function (t, i, n) {
    HC(this, tH, arguments), i !== I && n !== I || (this.$location.invalidateFlag = !0), this[Fb] = IN[Nb], this[tu] = IN.GROUP_PADDING, this[$b] = g$[Gb], this.$minSize = IN[Hb], this[jd] = IN[Xb]
  };

  function iH(t, i, n) {
    HC(this, iH, arguments), this[$b] = null
  }
  tH[_] = {
    type: Wb,
    $uiClass: $H,
    _o8M: function () {
      return !this._iD && !this._eK
    },
    forEachOutEdge: function (t, i, n) {
      return !1 !== XG(this, t, i) && (!n && this[Ub]() && this._8L ? this._8L[At](t, i) : void 0)
    },
    forEachInEdge: function (t, i, n) {
      return !1 !== WG(this, t, i) && (!n && this._o8M() && this._9O ? this._9O[At](t, i) : void 0)
    },
    forEachEdge: function (t, i, n) {
      return !1 !== XC(this, tH, nv, arguments) && (n || n || !this[Ub]() ? void 0 : (!this._9O || !1 !== this._9O.forEach(t, i)) && (this._8L ? this._8L[At](t, i) : void 0))
    },
    hasInEdge: function (t) {
      return t ? null != this._j3 : null != this._j3 || this._72()
    },
    hasOutEdge: function (t) {
      return t ? null != this._gN : null != this._gN || this._5P()
    },
    hasEdge: function (t) {
      return t ? null != this._j3 || null != this._gN : null != this._j3 || null != this._gN || this._9N()
    }
  }, GC(tH, UG), TN(tH.prototype, {
    expanded: {
      get: function () {
        return this._iD
      },
      set: function (t) {
        if (this._iD != t) {
          var i = new iB(this, jd, t, this._iD);
          !1 !== this[w](i) && (this._iD = t, this._10(), this.onEvent(i), this._eK || function () {
            if (!0 !== this._iD) HG(this).forEach(function (t) {
              var i = (t = t[Qv])[Rv],
                n = t.$to,
                e = i[gv](this),
                s = n[gv](this);
              e && !s ? (LG(this, t), DG(this, t)) : s && !e && (PG(this, t), DG(t[Td], t, this))
            }, this);
            else {
              var t = this._8L,
                i = this._9O;
              if (t)
                for (t = t._kH; t[N];) RG(this, n = t[0], n[Od]);
              if (i)
                for (i = i._kH; i[N];) {
                  var n;
                  kG(this, n = i[0], n[Td])
                }
              YG(this, HG(this))
            }
          } [m](this))
        }
      }
    }
  }), ZC(tH[_], [Yb, jb, Co, Zb]), KB[Qb] = tH, iH[_][Mi] = Vb, GC(iH, UG), KB[Kb] = iH;
  var nH = function (t) {
    this._kL = new WN, this._8O = new WN, this._h1 = new WN, this.id = ++QC, t && (this.data = t)
  };

  function eH(t, n, i, e) {
    return t[n] = i, e ? {
      get: function () {
        return this[n]
      },
      set: function (t) {
        if (t !== this[n]) {
          this[n] = t, this._oAE, this._1L = !0;
          for (var i = e.length; 0 <= --i;) this[e[i]] = !0
        }
      }
    } : {
      get: function () {
        return this[n]
      },
      set: function (t) {
        t !== this[n] && (this[n] = t)
      }
    }
  }

  function sH(t, i) {
    var n = {},
      e = {};
    for (var s in i) {
      var h = i[s];
      h[zb] && h.validateFlags.forEach(function (t, i, n) {
        n[i] = Jb + t, e[t] = !0
      }), n[s] = eH(t, E + s, h[O], h[zb])
    }
    for (var r in e) t[Jb + r] = !0;
    Object[J](t, n)
  }

  function hH(t) {
    if (t[qb] && t[ty]) {
      var i = t[ty];
      return t[iy] && wF(i) ? i + Math.PI : i
    }
  }
  nH[_] = {
    invalidate: function () {
      this[Qd]()
    },
    _1L: !0,
    _kL: null,
    _8O: null,
    _h1: null,
    _oAE: !1,
    _kM: 1,
    _kO: 1,
    _j9: !0,
    _8P: 0,
    _74: 0,
    _kP: null,
    _oAF: null,
    borderColor: ny,
    borderLineDash: null,
    borderLineDashOffset: null,
    syncSelection: !0,
    syncSelectionStyles: !0,
    _19: function () {
      this.$anchorPoint = JN(this[rb], this._8P, this._74)
    },
    setMeasuredBounds: function (t, i, n, e) {
      if (t instanceof Object && (n = t.x, e = t.y, i = t.height, t = t[Ht]), this._kL.width == t && this._kL[Xt] == i && this._kL.x == n && this._kL.y == e) return !1;
      this._kL.set(n || 0, e || 0, t || 0, i || 0)
    },
    initialize: function () {},
    measure: function () {},
    draw: function (t, i, n, e) {},
    _8R: function (t, i, n) {
      n.selectionType == zB[Br] ? (t.shadowColor = n[xf], t[mo] = n[yf] * i, t.shadowOffsetX = (n.selectionShadowOffsetX || 0) * i, t[Mo] = (n[ey] || 0) * i) : this._23(t, i, n)
    },
    _23: function (t, i, n) {
      var e = n[sy] || 0;
      n[hy] && (t[Da] = n[hy], t[wa](this._8O.x - e / 2, this._8O.y - e / 2, this._8O[Ht] + e, this._8O.height + e)), t[pa] = n[xf], t.lineWidth = e, t.strokeRect(this._8O.x - e / 2, this._8O.y - e / 2, this._8O[Ht] + e, this._8O.height + e)
    },
    _kR: function (t, i, n, e) {
      if (!this._j9) return !1;
      this[ry] || (n = this[Xd]), (!n || this[ay]) && e || (e = this), t[Ta](), 1 != this[oy] && (t[Oa] = this.$alpha), t.translate(this.$x, this.$y);
      var s = hH(this);
      if (s && t[It](s), (this[fy] || this.offsetY) && t.translate(this[fy], this[cy]), this[Kc] && t.rotate(this[Kc]), this[Qc] && this[Vc] && t.translate(-this[Vc].x, -this[Vc].y), this[xo] && (t[xo] = this[xo], t[mo] = this[mo] * i, t.shadowOffsetX = this.shadowOffsetX * i, t[Mo] = this[Mo] * i), n && e[wf] == zB[uy] && (this._23(t, i, e), n = !1), this._$r() && this._nIShape && !this[uu][_y]) {
        this[uu][Ya]();
        var h = {
          lineWidth: this.$border,
          strokeStyle: this[ly],
          lineDash: this[dy],
          lineDashOffset: this[vy],
          fillColor: this[by],
          fillGradient: this[vu],
          lineCap: wr,
          lineJoin: Vh
        };
        this[uu].draw(t, i, h, n, e), n = !1, t[xo] = Of
      }
      t.beginPath(), this[Wa](t, i, n, e), t.restore()
    },
    invalidateData: function () {
      this[yy] = !0, this[Jc] = !0, this._1L = !0
    },
    invalidateSize: function () {
      this[Jc] = !0, this._1L = !0
    },
    invalidateRender: function () {
      this._1L = !0
    },
    _5U: function () {},
    _$r: function () {
      return this[by] || this.$backgroundGradient || this[iu]
    },
    _4B: function () {
      return this[by] || this[gy]
    },
    doValidate: function () {
      return this[yy] && (this[yy] = !1) !== this.measure() && (this.$invalidateSize = !0), this.$invalidateSize && this[Ey] && this[Ey](), p$.call(this) ? (this.$invalidateRotate = !0, this.onBoundsChanged && this[xy](), !0) : this[my] ? (this.$invalidateRotate = !0, !(this[my] = !1)) : void 0
    },
    validate: function () {
      var t = this._j9;
      return this[py] && (this[py] = !1, this._j9 = this.$visible, !this._j9 || (this.$data || this.$showEmpty) && !1 !== this._5U() || (this._j9 = !1)), this._j9 ? (this._1L = !1, this[xe] || (this.initialize(), this._oAE = !0), this[My]()) : t != this._j9
    },
    _jB: function (t, i) {
      return t -= this.$x, i -= this.$y, m$.call(this, {
        x: t,
        y: i
      })
    },
    hitTest: function (t, i, n, e) {
      if (t -= this.$x, i -= this.$y, !this._h1.intersectsPoint(t, i, n)) return !1;
      var s = m$.call(this, {
        x: t,
        y: i
      });
      return t = s.x, i = s.y, !(e || !this._$r() || !this[uu] || !this._nIShape[Do](t, i, n, !1, this.$border, this[by] || this.$backgroundGradient)) || this.doHitTest(t, i, n)
    },
    doHitTest: function (t, i, n) {
      return this._kL[Vt](t, i, n)
    },
    hitTestByBounds: function (t, i, n, e) {
      var s = this._jB(t, i);
      return !(e || !this._$r() || !this[uu] || !this[uu][Do](t, i, n, !1, this[iu], this[by] || this.$backgroundGradient)) || this._kL[Vt](s.x, s.y, n)
    },
    onDataChanged: function (t, i) {
      this[yy] = !0, this._1L = !0, this[py] = !0
    },
    getBounds: function () {
      var t = this._h1[l]();
      return t.offset(this.x, this.y), this[Ci] && (this[Ci][It] && iF(t, this[Ci].rotate, t), t[ca](this[Ci].x || 0, this[Ci].y || 0)), t
    },
    destroy: function () {
      this._iWed = !0
    },
    _eQ: !1
  }, TN(nH.prototype, {
    originalBounds: {
      get: function () {
        return this._kL
      }
    },
    data: {
      get: function () {
        return this[Eu]
      },
      set: function (t) {
        if (this.$data != t) {
          var i = this[Eu];
          this[Eu] = t, this[wy](t, i)
        }
      }
    },
    parent: {
      get: function () {
        return this._kP
      }
    },
    showOnTop: {
      get: function () {
        return this._eQ
      },
      set: function (t) {
        t != this._eQ && (this._eQ = t, this._1L = !0, this._kP && this._kP._oAD && this._kP[Ty](this))
      }
    }
  }), sH(nH[_], {
    globalDirection: {
      value: !1,
      validateFlags: [Oy]
    },
    visible: {
      value: !0,
      validateFlags: [Ay, Oy]
    },
    showEmpty: {
      validateFlags: [Ay]
    },
    anchorPosition: {
      value: YN[_i],
      validateFlags: [Sy, Oy]
    },
    position: {
      value: YN[_i],
      validateFlags: [Oy]
    },
    offsetX: {
      value: 0,
      validateFlags: [Oy]
    },
    offsetY: {
      value: 0,
      validateFlags: [Oy]
    },
    layoutByAnchorPoint: {
      value: !0,
      validateFlags: [hh, Sy, Oy]
    },
    padding: {
      value: 0,
      validateFlags: [hh]
    },
    border: {
      value: 0,
      validateFlags: [hh]
    },
    borderRadius: {
      value: IN[Dy]
    },
    showPointer: {
      value: !1,
      validateFlags: [hh]
    },
    pointerX: {
      value: 0,
      validateFlags: [hh]
    },
    pointerY: {
      value: 0,
      validateFlags: [hh]
    },
    pointerWidth: {
      value: IN.POINTER_WIDTH
    },
    backgroundColor: {
      validateFlags: [hh]
    },
    backgroundGradient: {
      validateFlags: [hh, Iy]
    },
    selected: {
      value: !1,
      validateFlags: [hh]
    },
    selectionBorder: {
      value: IN.SELECTION_BORDER,
      validateFlags: [hh]
    },
    selectionShadowBlur: {
      value: IN.SELECTION_SHADOW_BLUR,
      validateFlags: [hh]
    },
    selectionColor: {
      value: IN.SELECTION_COLOR,
      validateFlags: [hh]
    },
    selectionType: {
      value: IN[Nr],
      validateFlags: [hh]
    },
    selectionShadowOffsetX: {
      value: 0,
      validateFlags: [hh]
    },
    selectionShadowOffsetY: {
      value: 0,
      validateFlags: [hh]
    },
    shadowBlur: {
      value: 0,
      validateFlags: [hh]
    },
    shadowColor: {
      validateFlags: [hh]
    },
    shadowOffsetX: {
      value: 0,
      validateFlags: [hh]
    },
    shadowOffsetY: {
      value: 0,
      validateFlags: [hh]
    },
    renderColorBlendMode: {},
    renderColor: {},
    x: {
      value: 0,
      validateFlags: [Oy]
    },
    y: {
      value: 0,
      validateFlags: [Oy]
    },
    rotatable: {
      value: !0,
      validateFlags: [Ly, hh]
    },
    rotate: {
      value: 0,
      validateFlags: [Ly, hh]
    },
    _hostRotate: {
      validateFlags: [Ly]
    },
    lineWidth: {
      value: 0,
      validateFlags: [uh]
    },
    alpha: {
      value: 1
    }
  });
  var rH = [zB[Ry], zB[bv], zB[an]];

  function aH() {
    rH.forEach(function (t) {
      this[t] = {}
    }, this)
  }
  aH[_] = {
    removeBinding: function (i) {
      for (var t = rH.length; 0 <= --t;) {
        var n = this[rH[t]];
        for (var e in n) {
          var s = n[e];
          Array.isArray(s) ? (kC(s, function (t) {
            return t[J_] == i
          }, this), s[N] || delete n[e]) : s[J_] == i && delete n[e]
        }
      }
    },
    _21: function (t, i, n) {
      if (!n && !(n = this[i[Di] || zB[Ry]])) return !1;
      var e = n[t];
      e ? (Array.isArray(e) || (n[t] = e = [e]), e[D](i)) : n[t] = i
    },
    _2M: function (t, i, n, e, s, h) {
      var r = this[t = t || zB[Ry]];
      if (!r) return !1;
      var a = {
        property: i,
        propertyType: t,
        bindingProperty: e,
        target: n,
        callback: s,
        invalidateSize: h
      };
      this._21(i, a, r)
    },
    onBindingPropertyChange: function (t, i, n, e) {
      var s = this[n || zB.PROPERTY_TYPE_ACCESSOR];
      if (!s) return !1;
      var h = s[i];
      return !!h && (t._1L = !0, function t(i, n, e, s) {
        if (Array.isArray(n))
          for (var h = n[N]; 0 <= --h;) t(i, n[h], e, s);
        else {
          var r = n[J_];
          if (r) {
            if (r instanceof nH || (r = i[r]), !r) return
          } else r = i;
          if (s = s || i[Py](n[ky], e), n[Cy] && (r[n[Cy]] = s), n.callback) {
            var a = n.callback;
            a instanceof Function || (a = i[a]), a instanceof Function && a[m](i, s, r)
          }
        }
      }(t, h, n, e), !0)
    },
    initBindingProperties: function (t, i) {
      for (var n = rH.length; 0 <= --n;) {
        var e = rH[n],
          s = this[e];
        for (var h in s) {
          var r = s[h];
          if (r[Cy]) {
            var a, o = r[J_];
            if (o) {
              if (!(o instanceof nH || (o = t[o]))) continue
            } else o = t;
            (a = !1 === i ? t[Py](r.property, e) : e == zB[bv] ? t.graph[Ny](t[Eu], r[ky]) : t.$data[r.property]) !== I && (o[r[Cy]] = a)
          }
        }
      }
    }
  };
  var oH = {
    SELECTION_COLOR: By,
    SELECTION_BORDER: Fy,
    SELECTION_SHADOW_BLUR: "selection.shadow.blur",
    SELECTION_SHADOW_OFFSET_X: "selection.shadow.offset.x",
    SELECTION_SHADOW_OFFSET_Y: "selection.shadow.offset.y",
    SELECTION_TYPE: $y,
    RENDER_COLOR: Gy,
    RENDER_COLOR_BLEND_MODE: "render.color.blend.mode",
    ALPHA: Hy,
    SHADOW_BLUR: Xy,
    SHADOW_COLOR: Wy,
    SHADOW_OFFSET_X: Uy,
    SHADOW_OFFSET_Y: Yy,
    SHAPE_STROKE: jy,
    SHAPE_STROKE_STYLE: Zy,
    SHAPE_LINE_FILL_COLOR: "shape.stroke.fill.color",
    SHAPE_LINE_DASH: Qy,
    SHAPE_LINE_DASH_OFFSET: "shape.line.dash.offset",
    SHAPE_FILL_COLOR: Vy,
    SHAPE_FILL_GRADIENT: Ky,
    SHAPE_OUTLINE: zy,
    SHAPE_OUTLINE_STYLE: Jy,
    LAYOUT_BY_PATH: qy,
    BACKGROUND_COLOR: tg,
    BACKGROUND_GRADIENT: ig,
    BORDER: ng,
    BORDER_COLOR: eg,
    BORDER_LINE_DASH: sg,
    BORDER_LINE_DASH_OFFSET: "border.line.dash.offset",
    BORDER_RADIUS: hg,
    PADDING: Co,
    LINE_CAP: rg,
    LINE_JOIN: ag,
    LINE_DASH_CAP: og,
    LINE_DASH_JOIN: fg,
    IMAGE_BACKGROUND_COLOR: "image.background.color",
    IMAGE_BACKGROUND_GRADIENT: "image.background.gradient",
    IMAGE_BORDER: cg
  };
  oH.IMAGE_BORDER_STYLE = oH[ug] = _g, oH.IMAGE_BORDER_LINE_DASH = "image.border.line.dash", oH.IMAGE_BORDER_LINE_DASH_OFFSET = "image.border.line.dash.offset", oH[lg] = oH[dg] = vg, oH[bg] = yg, oH.IMAGE_Z_INDEX = gg, oH[Eg] = xg, oH.IMAGE_ALPHA = mg, oH.LABEL_ROTATE = pg, oH[Mg] = wg, oH[Tg] = "label.global.direction", oH[Og] = Ag, oH[Sg] = "label.anchor.position", oH[Dg] = Ig, oH[Lg] = Rg, oH[Pg] = kg, oH[Cg] = Ng, oH.LABEL_PADDING = Bg, oH[Fg] = $g, oH[Gg] = Hg, oH.LABEL_RADIUS = Xg, oH.LABEL_OFFSET_X = Wg, oH[Ug] = Yg, oH[jg] = Zg, oH[Qg] = Vg, oH[Kg] = zg, oH.LABEL_BORDER_LINE_DASH = "label.border.line.dash", oH[Jg] = "label.border.line.dash.offset", oH[qg] = tE, oH[iE] = "label.background.color", oH[nE] = "label.background.gradient", oH[eE] = sE, oH[hE] = rE, oH.LABEL_SHADOW_COLOR = aE, oH.LABEL_SHADOW_OFFSET_X = "label.shadow.offset.x", oH.LABEL_SHADOW_OFFSET_Y = "label.shadow.offset.y", oH[oE] = fE, oH[cE] = uE, oH[_E] = "group.background.color", oH[lE] = "group.background.gradient", oH[dE] = vE, oH[bE] = yE, oH[gE] = EE, oH[xE] = "group.stroke.line.dash", oH[mE] = "group.stroke.line.dash.offset", oH[pE] = "edge.bundle.label.rotate", oH.EDGE_BUNDLE_LABEL_POSITION = "edge.bundle.label.position", oH.EDGE_BUNDLE_LABEL_ANCHOR_POSITION = "edge.bundle.label.anchor.position", oH[ME] = "edge.bundle.label.color", oH[wE] = "edge.bundle.label.font.size", oH.EDGE_BUNDLE_LABEL_FONT_FAMILY = "edge.bundle.label.font.family", oH.EDGE_BUNDLE_LABEL_FONT_STYLE = "edge.bundle.label.font.style", oH.EDGE_BUNDLE_LABEL_PADDING = "edge.bundle.label.padding", oH[TE] = "edge.bundle.label.pointer.width", oH[OE] = "edge.bundle.label.pointer", oH.EDGE_BUNDLE_LABEL_RADIUS = "edge.bundle.label.radius", oH[AE] = "edge.bundle.label.offset.x", oH[SE] = "edge.bundle.label.offset.y", oH.EDGE_BUNDLE_LABEL_BORDER = "edge.bundle.label.border", oH[DE] = "edge.bundle.label.border.color", oH[IE] = "edge.bundle.label.background.color", oH[LE] = "edge.bundle.label.background.gradient", oH[RE] = "edge.bundle.label.rotatable", oH[PE] = kE, oH[CE] = NE, oH[BE] = FE, oH[$E] = GE, oH[HE] = XE, oH.EDGE_LINE_DASH_OFFSET = "edge.line.dash.offset", oH[WE] = UE, oH[YE] = jE, oH[ZE] = QE, oH[VE] = KE, oH.EDGE_BUNDLE_GAP = zE, oH.EDGE_LOOPED_EXTAND = JE, oH.EDGE_EXTEND = qE, oH.EDGE_CONTROL_POINT = tx, oH[ix] = "edge.split.by.percent", oH[nx] = ex, oH[sx] = hx, oH.EDGE_CORNER = rx, oH[ax] = ox, oH[fx] = cx, oH.EDGE_TO_AT_EDGE = ux, oH[_x] = lx, oH.EDGE_TO_PORT = dx, oH[vx] = bx, oH[yx] = gx, oH[Ex] = xx, oH[mx] = px, oH[Mx] = "arrow.from.stroke.style", oH[wx] = Tx, oH.ARROW_FROM_OUTLINE_STYLE = "arrow.from.outline.style", oH.ARROW_FROM_LINE_DASH = Ox, oH[Ax] = "arrow.from.line.dash.offset", oH[Sx] = "arrow.from.fill.color", oH.ARROW_FROM_FILL_GRADIENT = "arrow.from.fill.gradient", oH[Dx] = Ix, oH.ARROW_FROM_LINE_JOIN = Lx, oH[fb] = Rx, oH.ARROW_TO_SIZE = Px, oH.ARROW_TO_OFFSET = kx, oH[Cx] = Nx, oH.ARROW_TO_STROKE_STYLE = "arrow.to.stroke.style", oH[Bx] = Fx, oH[$x] = "arrow.to.outline.style", oH[Gx] = Hx, oH[Xx] = "arrow.to.line.dash.offset", oH[Wx] = Ux, oH[Yx] = "arrow.to.fill.gradient", oH[jx] = Zx, oH.ARROW_TO_LINE_JOIN = Qx;
  var fH = new aH,
    cH = zB.PROPERTY_TYPE_ACCESSOR,
    uH = zB.PROPERTY_TYPE_STYLE;
  fH._2M(uH, oH[Nr], null, wf), fH._2M(uH, oH[Vx], null, sy), fH._2M(uH, oH.SELECTION_SHADOW_BLUR, null, yf), fH._2M(uH, oH[$r], null, xf), fH._2M(uH, oH[Kx], null, "selectionShadowOffsetX"), fH._2M(uH, oH.SELECTION_SHADOW_OFFSET_Y, null, "selectionShadowOffsetY"), fH._2M(cH, T, Gu, bn), fH._2M(uH, oH[Og], Gu, Wl), fH._2M(uH, oH[Mg], Gu, Yo), fH._2M(uH, oH.LABEL_GLOBAL_DIRECTION, Gu, iy), fH._2M(uH, oH[Sg], Gu, rb), fH._2M(uH, oH.LABEL_COLOR, Gu, zx), fH._2M(uH, oH.LABEL_FONT_SIZE, Gu, Jx), fH._2M(uH, oH[Kg], Gu, Ph), fH._2M(uH, oH[qx], Gu, dy), fH._2M(uH, oH[Jg], Gu, vy), fH._2M(uH, oH[qg], Gu, ly), fH._2M(uH, oH.LABEL_BACKGROUND_COLOR, Gu, tm), fH._2M(uH, oH.LABEL_ON_TOP, Gu, im), fH._2M(uH, oH[nm], null, mo), fH._2M(uH, oH[em], null, xo), fH._2M(uH, oH[sm], null, po), fH._2M(uH, oH[hm], null, Mo), fH._2M(uH, oH[Pg], Gu, rm), fH._2M(uH, oH[Cg], Gu, am), fH._2M(uH, oH[Qg], Gu, om), fH._2M(uH, oH[fm], Gu, It), fH._2M(uH, oH[cm], Gu, Co), fH._2M(uH, oH[Fg], Gu, um), fH._2M(uH, oH[Gg], Gu, eu), fH._2M(uH, oH[_m], Gu, lm), fH._2M(uH, oH[dm], Gu, fy), fH._2M(uH, oH.LABEL_OFFSET_Y, Gu, cy), fH._2M(uH, oH[eE], Gu, vm), fH._2M(uH, oH.LABEL_BACKGROUND_GRADIENT, Gu, lu), fH._2M(uH, oH[jg], Gu, dl), fH._2M(uH, oH[hE], Gu, mo), fH._2M(uH, oH[bm], Gu, xo), fH._2M(uH, oH[ym], Gu, po), fH._2M(uH, oH[gm], Gu, Mo), fH._2M(uH, oH.LABEL_Z_INDEX, Gu, Al), fH._2M(uH, oH[Em], null, Ha), fH._2M(uH, oH[xm], null, To), fH._2M(uH, oH[mm], null, Hy);
  var _H = new aH;
  _H._2M(cH, k_), _H._2M(cH, rb, null, pm), _H._2M(cH, It, null, It), _H._2M(uH, oH[Mm], null, tm), _H._2M(uH, oH[wm], null, lu), _H._2M(uH, oH.PADDING, null, Co), _H._2M(uH, oH[Tm], null, Ph), _H._2M(uH, oH.BORDER_RADIUS, null, lm), _H._2M(uH, oH.BORDER_COLOR, null, ly), _H._2M(uH, oH.BORDER_LINE_DASH, null, dy), _H._2M(uH, oH.BORDER_LINE_DASH_OFFSET, null, vy), _H._2M(cH, Io, Io, bn, Om), _H._2M(cH, dl, Io, dl), _H._2M(uH, oH.SHAPE_STROKE, Io, ma), _H._2M(uH, oH.SHAPE_STROKE_STYLE, Io, pa), _H._2M(uH, oH[Am], Io, Af), _H._2M(uH, oH[Sm], Io, gu), _H._2M(uH, oH.IMAGE_ADJUST, Io, Dm), _H._2M(uH, oH[Im], Io, mf), _H._2M(uH, oH[Lm], Io, Tf), _H._2M(uH, oH[Rm], Io, Df), _H._2M(uH, oH[Pm], Io, If), _H._2M(uH, oH[km], Io, kf), _H._2M(uH, oH.LINE_CAP, Io, pf), _H._2M(uH, oH[Cm], Io, Mf), _H._2M(uH, oH[Nm], Io, tm), _H._2M(uH, oH[Bm], Io, lu), _H._2M(uH, oH[bg], Io, Co), _H._2M(uH, oH[Fm], Io, Ph), _H._2M(uH, oH[dg], Io, lm), _H._2M(uH, oH[ug], Io, ly), _H._2M(uH, oH[$m], Io, dy), _H._2M(uH, oH.IMAGE_BORDER_LINE_DASH_OFFSET, Io, vy), _H._2M(uH, oH[Gm], Io, Al), _H._2M(uH, oH[Hm], Io, Hy), _H._2M(cH, jd, null, null, Xm), _H._2M(cH, Yd, null, null, Xm);
  var lH = new aH;
  lH._2M(cH, jb, null, null, Wm), lH._2M(cH, Zb, null, null, Wm), lH._2M(cH, Yb, null, null, Wm), lH._2M(cH, Co, null, null, Wm), lH._2M(uH, oH[_E], Um, Af), lH._2M(uH, oH[lE], Um, Df), lH._2M(uH, oH[bE], Um, ma), lH._2M(uH, oH[gE], Um, pa), lH._2M(uH, oH.GROUP_STROKE_LINE_DASH, Um, If), lH._2M(uH, oH[mE], Um, kf), lH._2M(uH, oH.GROUP_RADIUS, null, null, Wm);
  var dH = new aH;
  dH._2M(cH, kv, Um, null, Ym), dH._2M(cH, Uv, Um, null, Ym), dH._2M(cH, Fv, Um, null, Ym), dH._2M(uH, oH[jm], Um, null, Ym), dH._2M(uH, oH[VE], Um, null, Ym), dH._2M(uH, oH[PE], Um, ma), dH._2M(uH, oH.EDGE_COLOR, Um, pa), dH._2M(uH, oH[vx], Um, Zm), dH._2M(uH, oH[fb], Um, Qm), dH._2M(uH, oH.LINE_DASH_CAP, Um, Rf), dH._2M(uH, oH.LINE_DASH_JOIN, Um, Pf), dH._2M(uH, oH[ZE], Um, Lf), dH._2M(uH, oH[fx], null, Vm, Ym), dH._2M(uH, oH[Km], null, zm, Ym), dH._2M(uH, oH[BE], Um, mf), dH._2M(uH, oH[$E], Um, Tf), dH._2M(uH, oH.EDGE_LINE_DASH, Um, If), dH._2M(uH, oH.EDGE_LINE_DASH_OFFSET, Um, kf), dH._2M(uH, oH[Jm], Um, null, Ym), dH._2M(uH, oH[WE], Um, null, Ym), dH._2M(uH, oH[YE], Um, null, Ym), dH._2M(uH, oH[_x], Um, null, Ym), dH._2M(uH, oH[qm], Um, null, Ym), dH._2M(uH, oH[tp], Um, pf), dH._2M(uH, oH[Cm], Um, Mf), dH._2M(cH, $v, null, null, Ym, !0), dH._2M(cH, $o, null, null, Ym, !0), dH._2M(uH, oH[yx], Um, ip), dH._2M(uH, oH[Ex], Um, np), dH._2M(uH, oH.ARROW_FROM_STROKE, Um, ep), dH._2M(uH, oH[Mx], Um, sp), dH._2M(uH, oH[wx], Um, hp), dH._2M(uH, oH.ARROW_FROM_OUTLINE_STYLE, Um, "fromArrowOutlineStyle"), dH._2M(uH, oH[Sx], Um, rp), dH._2M(uH, oH[ap], Um, "fromArrowFillGradient"), dH._2M(uH, oH[op], Um, fp), dH._2M(uH, oH[Ax], Um, "fromArrowLineDashOffset"), dH._2M(uH, oH.ARROW_FROM_LINE_JOIN, Um, cp), dH._2M(uH, oH[Dx], Um, up), dH._2M(uH, oH.ARROW_TO_SIZE, Um, _p), dH._2M(uH, oH[lp], Um, dp), dH._2M(uH, oH[Cx], Um, vp), dH._2M(uH, oH.ARROW_TO_STROKE_STYLE, Um, bp), dH._2M(uH, oH.ARROW_TO_OUTLINE, Um, yp), dH._2M(uH, oH[$x], Um, gp), dH._2M(uH, oH[Wx], Um, Ep), dH._2M(uH, oH[Yx], Um, xp), dH._2M(uH, oH[Gx], Um, mp), dH._2M(uH, oH[Xx], Um, "toArrowLineDashOffset"), dH._2M(uH, oH[pp], Um, Mp), dH._2M(uH, oH[jx], Um, wp);
  var vH = new aH;
  vH._2M(uH, oH[ME], Tp, zx), vH._2M(uH, oH.EDGE_BUNDLE_LABEL_POSITION, Tp, Yo), vH._2M(uH, oH[Op], Tp, rb), vH._2M(uH, oH.EDGE_BUNDLE_LABEL_FONT_SIZE, Tp, Jx), vH._2M(uH, oH[RE], Tp, vm), vH._2M(uH, oH[pE], Tp, It), vH._2M(uH, oH[Ap], Tp, rm), vH._2M(uH, oH[Sp], Tp, am), vH._2M(uH, oH[Dp], Tp, Co), vH._2M(uH, oH[TE], Tp, um), vH._2M(uH, oH.EDGE_BUNDLE_LABEL_POINTER, Tp, eu), vH._2M(uH, oH[Ip], Tp, lm), vH._2M(uH, oH[AE], Tp, fy), vH._2M(uH, oH.EDGE_BUNDLE_LABEL_OFFSET_Y, Tp, cy), vH._2M(uH, oH.EDGE_BUNDLE_LABEL_BORDER, Tp, Ph), vH._2M(uH, oH.EDGE_BUNDLE_LABEL_BORDER_STYLE, Tp, ly), vH._2M(uH, oH[IE], Tp, tm), vH._2M(uH, oH[LE], Tp, lu);
  var bH = new aH;

  function yH(t, i) {
    return (t = t[Al]) == (i = i.zIndex) ? 0 : (i = i || 0) < (t = t || 0) ? 1 : t < i ? -1 : void 0
  }
  bH._2M(cH, k_), bH._2M(uH, oH[Mm], null, tm), bH._2M(uH, oH.BACKGROUND_GRADIENT, null, lu), bH._2M(uH, oH[Lp], null, Co), bH._2M(uH, oH.BORDER, null, Ph), bH._2M(uH, oH[Dy], null, lm), bH._2M(uH, oH[Rp], null, ly), bH._2M(uH, oH[Pp], null, dy), bH._2M(uH, oH.BORDER_LINE_DASH_OFFSET, null, vy), bH._2M(cH, It, null, It), bH._2M(cH, $v, null, null, kp), bH._2M(cH, ab, Io, bn), bH._2M(cH, dl, Io, dl), bH._2M(uH, oH[Cp], Io, ma), bH._2M(uH, oH.SHAPE_STROKE_STYLE, Io, pa), bH._2M(uH, oH[Am], Io, Af), bH._2M(uH, oH[Rm], Io, Df), bH._2M(uH, oH[Np], Io, Rf), bH._2M(uH, oH.LINE_DASH_JOIN, Io, Pf), bH._2M(uH, oH.SHAPE_LINE_FILL_COLOR, Io, Lf), bH._2M(uH, oH[Im], Io, mf), bH._2M(uH, oH[Lm], Io, Tf), bH._2M(uH, oH.SHAPE_LINE_DASH, Io, If), bH._2M(uH, oH[km], Io, kf), bH._2M(uH, oH[tp], Io, pf), bH._2M(uH, oH.LINE_JOIN, Io, Mf), bH._2M(uH, oH[Sm], Io, gu), bH._2M(uH, oH[Nm], Io, tm), bH._2M(uH, oH[Bm], Io, lu), bH._2M(uH, oH.IMAGE_PADDING, Io, Co), bH._2M(uH, oH.IMAGE_BORDER, Io, Ph), bH._2M(uH, oH[dg], Io, lm), bH._2M(uH, oH.IMAGE_BORDER_COLOR, Io, ly), bH._2M(uH, oH[$m], Io, dy), bH._2M(uH, oH.IMAGE_BORDER_LINE_DASH_OFFSET, Io, vy), bH._2M(uH, oH[vx], Io, Zm), bH._2M(uH, oH[yx], Io, ip), bH._2M(uH, oH.ARROW_FROM_OFFSET, Io, np), bH._2M(uH, oH[mx], Io, ep), bH._2M(uH, oH[Mx], Io, sp), bH._2M(uH, oH[Sx], Io, rp), bH._2M(uH, oH[ap], Io, "fromArrowFillGradient"), bH._2M(uH, oH.ARROW_FROM_LINE_DASH, Io, fp), bH._2M(uH, oH.ARROW_FROM_LINE_DASH_OFFSET, Io, "fromArrowLineDashOffset"), bH._2M(uH, oH[Bp], Io, cp), bH._2M(uH, oH[Dx], Io, up), bH._2M(uH, oH[Fp], Io, _p), bH._2M(uH, oH[lp], Io, dp), bH._2M(uH, oH[fb], Io, Qm), bH._2M(uH, oH.ARROW_TO_STROKE, Io, vp), bH._2M(uH, oH[$p], Io, bp), bH._2M(uH, oH.ARROW_TO_FILL_COLOR, Io, Ep), bH._2M(uH, oH.ARROW_TO_FILL_GRADIENT, Io, xp), bH._2M(uH, oH.ARROW_TO_LINE_DASH, Io, mp), bH._2M(uH, oH.ARROW_TO_LINE_DASH_OFFSET, Io, "toArrowLineDashOffset"), bH._2M(uH, oH[pp], Io, Mp), bH._2M(uH, oH.ARROW_TO_LINE_CAP, Io, wp);
  var gH = function (t, i) {
    this[Dd] = new WN, HC(this, gH, arguments), this.id = this.$data.id, this.graph = i, this._gX = [], this._oBV = new aH
  };

  function EH(t, i, n, e) {
    if (e != zB.PROPERTY_TYPE_ACCESSOR)
      if (e != zB.PROPERTY_TYPE_CLIENT) {
        if (e != zB[bv]) return !1;
        t.setStyle(n, i)
      } else t.set(n, i);
    else t[n] = i
  }
  gH[_] = {
    syncSelection: !1,
    graph: null,
    layoutByAnchorPoint: !1,
    _oBV: null,
    _gX: null,
    addChild: function (t, i) {
      t._kP = this, i !== I ? BC(this._gX, t, i) : this._gX[D](t), t._eQ && this._oAD(t), this[Gp](), this[Hp](), this[Xp] = !0
    },
    removeChild: function (t) {
      this._oBV.removeBinding(t), t._kP = null, FC(this._gX, t), this._kJ && this._kJ[en](t), this.invalidateSize(), this.$invalidateChild = !0
    },
    getProperty: function (t, i) {
      return i == zB[bv] ? this[Wp][Ny](this[Eu], t) : i == zB[an] ? this.$data.get(t) : this.$data[t]
    },
    getStyle: function (t) {
      return this[Wp].getStyle(this[Eu], t)
    },
    _$w: function (t, i, n) {
      var e = this[Up][Yp](this, t, i, n);
      return fH.onBindingPropertyChange(this, t, i, n) || e
    },
    onPropertyChange: function (t) {
      if (Al == t[wi]) return this[Wd](), !0;
      if (Mv != t[Mi]) return this._$w(t[wi], t[Di] || cH, t[O]);
      if (ll == t.kind) return this[ll](), !0;
      var i = t.value;
      return !(!i || !i.ui || (tn == t[wi] ? this._9T(i) : en == t.kind && this[Va](i.ui), 0))
    },
    label: null,
    initLabel: function () {
      var t = new mH;
      t[T] = Gu, this[jp](t), this[Gu] = t
    },
    initialize: function () {
      this[Zp](), this[Eu]._oBS && this[Eu]._oBS[At](this._9T, this), fH[Qp](this), this[Up][Qp](this, !1)
    },
    addBinding: function (t, i) {
      if (!i[ky]) return !1;
      i.target = t, this._oBV._21(i.property, i)
    },
    _gZ: function (t, i) {
      var n = this[Eu];
      if (!n[wv]) return !1;
      var e = n[wv][wt](t.id);
      if (!e || !e[Vp]) return !1;
      var s = e.bindingProperties;
      if (bN(s)) {
        var h = !1;
        return PC(s, function (t) {
          if (bn == t[Cy]) return h = EH(n, i, t.property, t[Di]), !1
        }, this), h
      }
      return bn == s[Cy] && EH(n, i, s[ky], s.propertyType)
    },
    _9T: function (t) {
      var i = t.ui;
      if (i) {
        var n = t[Vp];
        n && (Array[$](n) ? n[At](function (t) {
          this.addBinding(i, t)
        }, this) : this[Kp](i, n)), this[jp](i)
      }
    },
    validate: function () {
      return this[xe] || (this.initialize(), this[xe] = !0), this[My]()
    },
    _$d: !0,
    invalidateChildrenIndex: function () {
      this._$d = !0
    },
    doValidate: function () {
      if (this._1L && (this._1L = !1, this.validateChildren() && (this.measure(), this[Jc] = !0), this._$d && (this._$d = !1, eN ? this._gX = RC(this._gX, yH) : this._gX[zp](yH))), p$[m](this) && (this[yu] = !0), this[yu]) {
        w$.call(this), this.uiBounds.setByRect(this._h1);
        var t = this[Jp] || 0,
          i = Math.max(this[Jp] || 0, this[qp] || 0, this.$selectionShadowOffsetX || 0),
          n = Math.max(this.$shadowOffsetY || 0, this[tM] || 0),
          e = Math.max(t, this.$shadowBlur, this.$selectionShadowBlur),
          s = (e += IN[iM] || 0) - i,
          h = e + i,
          r = e - n,
          a = e + n;
        return s < 0 && (s = 0), h < 0 && (h = 0), r < 0 && (r = 0), a < 0 && (a = 0), this.uiBounds.grow(r, s, a, h), this.onBoundsChanged && this[xy](), this.$invalidateBounds = !0
      }
    },
    validateChildren: function () {
      var t = this[Xp];
      this[Xp] = !1;
      var i = this[nM],
        n = this[eM];
      i && (i[sM] = this.$renderColor, i[hM] = this.$renderColorBlendMode, i.$shadowColor = this[rM], i.$shadowBlur = this[aM], i.$shadowOffsetX = this[qp], i[oM] = this[oM]), this[eM] = !1, i && i._1L && (n = i[Ya]() || n, i.$x = 0, i.$y = 0, i[yu] && w$[m](i), t = !0);
      for (var e = 0, s = this._gX.length; e < s; e++) {
        var h = this._gX[e];
        if (h != i) {
          var r = h._1L && h[Ya]();
          (r || n) && h._j9 && T$(h, i), !t && r && (t = !0)
        }
      }
      return t
    },
    measure: function () {
      var t, i;
      this._kL[Ot]();
      for (var n = 0, e = this._gX.length; n < e; n++)(t = this._gX[n])._j9 && ((i = t._h1).width <= 0 || i.height <= 0 || this._kL[Kt](t.$x + i.x, t.$y + i.y, i[Ht], i[Xt]))
    },
    _kJ: null,
    _oAD: function (t) {
      return this._kJ ? t[im] ? this._kJ.add(t) : this._kJ[en](t) : t[im] ? (this._kJ = new LN, this._kJ.add(t)) : void 0
    },
    draw: function (t, i, n, e) {
      for (var s, h = 0, r = this._gX[N]; h < r; h++)(s = this._gX[h])._j9 && !s.showOnTop && s._kR(t, i, n, this)
    },
    _9U: function (t, i) {
      if (!this._j9 || !this._kJ || !this._kJ[N]) return !1;
      var n;
      t.save(), t[Aa](this.$x, this.$y), this.$rotate && t[It](this.$rotate), this[Qc] && this[Vc] && t[Aa](-this._oAF.x, -this[Vc].y), this[xo] && (t[xo] = this[xo], t[mo] = this.shadowBlur * i, t[po] = this[po] * i, t.shadowOffsetY = this[Mo] * i), t.beginPath();
      for (var e = 0, s = this._gX[N]; e < s; e++)(n = this._gX[e])._j9 && n[im] && n._kR(t, i, this.selected, this);
      t[Ba]()
    },
    doHitTest: function (t, i, n) {
      if (n) {
        if (!this._kL[Qt](t - n, i - n, 2 * n, 2 * n)) return !1
      } else if (!this._kL.intersectsPoint(t, i)) return !1;
      return this[fM](t, i, n)
    },
    hitTestChildren: function (t, i, n) {
      for (var e, s = this._gX.length - 1; 0 <= s; s--)
        if ((e = this._gX[s])._j9 && e.hitTest(t, i, n)) return e;
      return !1
    },
    destroy: function () {
      this[Pu] = !0;
      for (var t = this._gX.length - 1; 0 <= t; t--) this._gX[t][ms]()
    }
  }, GC(gH, nH), TN(gH[_], {
    renderColorBlendMode: {
      get: function () {
        return this.$renderColorBlendMode
      },
      set: function (t) {
        this.$renderColorBlendMode = t, this._1L = !0, this[no] && (this[no].renderColorBlendMode = this.$renderColorBlendMode)
      }
    },
    renderColor: {
      get: function () {
        return this[sM]
      },
      set: function (t) {
        this[sM] = t, this._1L = !0, this[no] && (this.body[Ha] = this[sM])
      }
    },
    bodyBounds: {
      get: function () {
        if (this[cM]) {
          this[cM] = !1;
          var t, i = this[no];
          t = i && i._j9 && !this._$r() ? i._h1[l]() : this._8O.clone(), this[It] && (t.original = t.clone(), t.rotate = this[It], t.tx = this.x, t.ty = this.y, iF(t, this[It], t)), t.x += this.$x, t.y += this.$y, this._d6 = t
        }
        return this._d6
      }
    },
    bounds: {
      get: function () {
        return new WN((this.$x || 0) + this.uiBounds.x, (this.$y || 0) + this[Dd].y, this[Dd].width, this[Dd][Xt])
      }
    },
    body: {
      get: function () {
        return this[nM]
      },
      set: function (t) {
        t && this[nM] != t && (this[nM] = t, this[eM] = !0, this[Hp]())
      }
    }
  }), IN.UI_BOUNDS_GROW = 1;
  var xH = function (t) {
    HC(this, xH, arguments)
  };
  xH[_] = {
    strokeStyle: uM,
    lineWidth: 0,
    fillColor: null,
    fillGradient: null,
    _kM: 1,
    _kO: 1,
    outline: 0,
    onDataChanged: function (t, i) {
      XC(this, xH, wy, arguments), this._lQ && this._8I && this._lQ._6Y(this._8I, this), t && this._oBW(t)
    },
    _oBW: function (t) {
      this._lQ = WF(t), this._lQ[Ya](), this._lQ._mQ != CF && !this._lQ._6X() || (this._8I || (this._8I = function (t) {
        this[Qd](), this._kP && this._kP[Wp] && (this._kP.invalidateSize(), this._kP[Wp][ll]())
      }), this._lQ[_M](this._8I, this))
    },
    _lQ: null,
    initialize: function () {
      this[Om](this.$data)
    },
    _5U: function () {
      return this._lQ && this._lQ[Wa]
    },
    _o8F: function (t) {
      if (!t || t.width <= 0 || t[Xt] <= 0 || !this[lM] || !(this[dl] instanceof Object)) return this._kM = 1, void(this._kO = 1);
      var i = this[dl][Ht],
        n = this[dl][Xt];
      if (i !== I && null !== i || (i = -1), n !== I && null !== n || (n = -1), i < 0 && n < 0) return this._kM = 1, void(this._kO = 1);
      var e, s, h = t.width,
        r = t[Xt];
      0 <= i && (e = i / h), 0 <= n && (s = n / r), i < 0 ? e = s : n < 0 && (s = e), this._kM = e, this._kO = s
    },
    validateSize: function () {
      if (this.$invalidateScale) {
        this[dM] = !1;
        var t = this[vM];
        this._kM, this._kO, this._o8F(t), this[bM](t[Ht] * this._kM, t[Xt] * this._kO, t.x * this._kM, t.y * this._kO)
      }
    },
    measure: function () {
      var t = this._lQ[Ro](this[ma] + this.outline);
      if (t) return this[dM] = !0, void(this[vM] = t[l]());
      this._kL.set(0, 0, 0, 0)
    },
    onBoundsChanged: function () {
      this[yM] = !0
    },
    _1U: function () {
      this[yM] = !1, this.fillGradient ? this._fillGradient = jF[_][du][m](this[gM], this._8O) : this[Sf] = null
    },
    _lH: function (t) {
      var i, n;
      if (Ih == this.$adjustType) n = -(i = 1);
      else {
        if (Lh != this[EM]) return;
        i = -1, n = 1
      }
      var e = this._kL.cx,
        s = this._kL.cy;
      t[Aa](e, s), t[wo](i, n), t[Aa](-e, -s)
    },
    draw: function (t, i, n, e) {
      if (this._kM && this._kO) {
        if (this[yM] && this._1U(), t[Ta](), this.$adjustType && this._lH(t), this._lQ._mQ == BF) return t.scale(this._kM, this._kO), this._lQ._mO[Wa](t, i, this, n, e || this), void t[Ba]();
        n && this._8R(t, i, e), this._lQ.draw(t, i, this, this._kM, this._kO), t[Ba]()
      }
    },
    doHitTest: function (t, i, n) {
      if (this._lQ.hitTest) {
        Ih == this[EM] ? i = 2 * this._kL.cy - i : Lh == this[EM] && (t = 2 * this._kL.cx - t), t /= this._kM, i /= this._kO;
        var e = (this._kM + this._kO) / 2;
        return 1 < e && (n /= e, n |= 0), this._lQ._mO instanceof o$ ? this._lQ._mO[Do](t, i, n, !0, this[xM], this[mM] || this[gM]) : this._lQ[Do](t, i, n)
      }
      return !0
    },
    $invalidateScale: !0,
    $invalidateFillGradient: !0
  }, GC(xH, nH), sH(xH[_], {
    adjustType: {},
    fillColor: {},
    size: {
      validateFlags: [hh, pM]
    },
    fillGradient: {
      validateFlags: [MM]
    }
  }), TN(xH[_], {
    originalBounds: {
      get: function () {
        return this._originalBounds
      }
    }
  }), IN.ALIGN_POSITION = YN.CENTER_MIDDLE;
  var mH = function (t) {
    HC(this, mH, arguments), this[zx] = IN[Dg]
  };
  mH[_] = {
    color: IN[Dg],
    showPointer: !0,
    fontSize: null,
    fontFamily: null,
    fontStyle: null,
    _i5: null,
    alignPosition: null,
    measure: function () {
      this[Eu] = "" + this[Eu], this[wM];
      var t = function t(i, n, e, s, h, r) {
        if (!i) return {
          width: 0,
          height: 0
        };
        if (n = n || IN[Jr], oF && n < 9) {
          var a = n / 9,
            o = t(i, 9, e, s, h);
          return o[Ht] *= a, o[Xt] *= a, o
        }
        var f = aF();
        f.font = r || fF(e, n, s);
        for (var c = n * (h = h || IN.LINE_HEIGHT), u = 0, _ = 0, l = i.split(w_), d = 0, v = l.length; d < v; d++) {
          var b = l[d];
          u = Math.max(f[TM](b)[Ht], u), _ += c
        }
        return {
          width: u,
          height: _
        }
      }(this[Eu], this[OM], this[AM], this.$fontStyle, IN[Hr], this[SM]);
      if (this._i5 = t, this.$size) {
        var i = this[lM][Ht] || 0,
          n = this[lM][Xt] || 0;
        return this[bM](i > t[Ht] ? i : t.width, n > t[Xt] ? n : t[Xt])
      }
      return this.setMeasuredBounds(t.width, t.height)
    },
    doHitTest: function (t, i, n) {
      return !!this[Eu] && ((e = n) < 1 && (e = 1), function (t, i, n, e, s) {
        var h = aF(n = Math[Vh](n) || 1, e = Math[Vh](e) || 1);
        h[Qf](1, 0, 0, 1, -t, -i), s.draw(h);
        var r = cF(h, 0, 0, n, e);
        if (!r) return !1;
        for (var a = (r = r.data)[N] / 4; 0 < a--;)
          if (0 < r[4 * a - 1]) return !0;
        return !1
      }(t - e, i - e, 2 * e, 2 * e, this));
      var e
    },
    draw: function (t, i, n, e) {
      n && this._8R(t, i, e);
      var s = hH(this);
      if (s) {
        var h = AF(s);
        kN < h && h < 3 * kN && (t.translate(this._kL[Ht] / 2, this._kL.height / 2), t.rotate(Math.PI), t[Aa](-this._kL[Ht] / 2, -this._kL.height / 2))
      }
      var r = this[om] || IN[DM],
        a = r[ii],
        o = r[ni],
        f = 0;
      ui == a ? (a = IM, f += this._kL[Ht] / 2) : a == ZN ? (a = $t, f += this._kL.width) : a = Jt;
      var c = 0;
      fi == o ? c = (this._kL[Xt] - this._i5[Xt]) / 2 : o == VN && (c = this._kL[Xt] - this._i5[Xt]), t.fillStyle = this[zx],
        function (t, i, n, e, s, h, r, a, o, f) {
          if (t.save(), t[Aa](n, e), oF && r < 9) {
            var c = r / 9;
            t.scale(c, c), r = 9, f = null
          }
          o = o || IN[Hr], o *= r = r || IN[Jr], t[wM] = f || fF(h, r, a), t[LM] = s, t[RM] = PM;
          for (var u = o / 2, _ = i[k](w_), l = 0, d = _.length; l < d; l++) {
            var v = _[l];
            t[kM](v, 0, u), u += o
          }
          t[Ba]()
        }(t, this.$data, f, c, a, this[AM], this[OM], this[CM], IN[Hr], this.$font)
    },
    _5U: function () {
      return null != this[Eu] || this[lM]
    },
    $invalidateFont: !0
  }, GC(mH, nH), sH(mH[_], {
    size: {
      validateFlags: [uh]
    },
    fontStyle: {
      validateFlags: [uh, NM]
    },
    fontSize: {
      validateFlags: [uh, NM]
    },
    fontFamily: {
      validateFlags: [uh, NM]
    }
  }), TN(mH[_], {
    font: {
      get: function () {
        return this.$invalidateFont && (this.$invalidateFont = !1, this[SM] = (this.$fontStyle || IN[gt]) + C + (this[OM] || IN[Jr]) + Et + (this[AM] || IN[qr])), this.$font
      }
    }
  });
  var pH = function (t) {
    t = t || new o$, this.pathBounds = new WN, HC(this, pH, [t])
  };

  function MH(t, i) {
    HC(this, MH, arguments)
  }

  function wH(t, i) {
    HC(this, wH, arguments)
  }
  pH[_] = {
    layoutByPath: !0,
    layoutByAnchorPoint: !1,
    measure: function () {
      this[BM] = !0, this.$invalidateToArrow = !0, this.$data[Ro](this[xM] + this.$outline, this[FM]), this[bM](this[FM])
    },
    validateSize: function () {
      if (this.$invalidateFromArrow || this.$invalidateToArrow) {
        var t, i = this[FM].clone();
        this[BM] && (this[BM] = !1, (t = this[$M]()) && i.add(t)), this[GM] && (this[GM] = !1, (t = this[HM]()) && i.add(t)), this[bM](i)
      }
    },
    validateFromArrow: function () {
      if (this.$data._l2 && this.$fromArrow) {
        var t = this.$data,
          i = 0,
          n = 0,
          e = this[XM];
        e && (isNaN(e) && (e.x || e.y) ? (i += e.x || 0, n += e.y || 0) : i += e || 0, 0 < i && i < 1 && (i *= t._l2)), this.fromArrowLocation = t[ff](i, n), this.fromArrowLocation[It] = Math.PI + this.fromArrowLocation[It] || 0, this.$fromArrowShape = DH(this.$fromArrow, this[WM]);
        var s = this[UM][Ro](this[YM][ma] + this[YM][mf]);
        return this[jM] instanceof KB.Gradient ? this.fromArrowStyles[Sf] = jF[_][du].call(this[jM], s) : this[YM] && (this[YM][Sf] = null), s[ca](this[ZM].x, this[ZM].y), nF(s, this[ZM][It], s, this[ZM].x, this.fromArrowLocation.y), s
      }
      this.$fromArrowShape = null
    },
    validateToArrow: function () {
      if (this[Eu]._l2 && this[QM]) {
        var t = this.$data,
          i = 0,
          n = 0,
          e = this.$toArrowOffset;
        e && (isNaN(e) && (e.x || e.y) ? (i += e.x || 0, n += e.y || 0) : i += e || 0), i < 0 && -1 < i && (i *= t._l2), i += t._l2, this[VM] = t.getLocation(i, n), this[KM] = DH(this.$toArrow, this[zM]);
        var s = this[KM][Ro](this[JM][ma] + this[JM][mf]);
        return this[xp] instanceof KB.Gradient ? this[JM][Sf] = jF.prototype[du].call(this.toArrowFillGradient, s) : this[JM] && (this[JM]._fillGradient = null), s[ca](this.toArrowLocation.x, this.toArrowLocation.y), nF(s, this[VM].rotate, s, this[VM].x, this[VM].y), s
      }
      this[KM] = null
    },
    _2E: function (t) {
      var i = t ? "from" : Uv,
        n = this[i + qM];
      n === I && (n = this[xM]);
      var e = this[i + tw];
      e === I && (e = this.strokeStyle);
      var s = this[i + iw];
      s || (this[i + iw] = s = {}), s[ma] = n, s[pa] = e, s[If] = this[i + nw], s.lineDashOffset = this[i + ew], s.fillColor = this[i + sw], s[Df] = this[i + hw], s[pf] = this[i + rw], s[Mf] = this[i + aw], s.outline = this[i + ow] || 0, s[Tf] = this[i + fw]
    },
    doValidate: function () {
      return this[cw] && this._2E(!0), this.$toArrow && this._2E(!1), XC(this, pH, My)
    },
    drawArrow: function (t, i, n, e) {
      if (this[cw] && this.$fromArrowShape) {
        t[Ta]();
        var s = (a = this[ZM]).x,
          h = a.y,
          r = a.rotate;
        t[Aa](s, h), r && t[It](r), this[UM][Wa](t, i, this[YM], n, e), t[Ba]()
      }
      var a;
      this[QM] && this[KM] && (t.save(), s = (a = this[VM]).x, h = a.y, r = a[It], t[Aa](s, h), r && t[It](r), this[KM][Wa](t, i, this[JM], n, e), t[Ba]())
    },
    outlineStyle: null,
    outline: 0,
    onBoundsChanged: function () {
      this[yM] = !0
    },
    _1U: function () {
      this.$invalidateFillGradient = !1, this[gM] ? this[Sf] = jF[_][du][m](this[gM], this._8O) : this._fillGradient = null
    },
    draw: function (t, i, n, e) {
      this[yM] && this._1U(), this[Eu].draw(t, i, this, n, e), this[uw](t, i, n, e)
    },
    doHitTest: function (t, i, n) {
      if (this[Eu].hitTest(t, i, n, !0, this[xM] + this[_w], this[mM] || this[gM])) return !0;
      if (this.$toArrow && this[KM]) {
        var e = t - this.toArrowLocation.x,
          s = i - this[VM].y;
        this.toArrowLocation[It] && (e = (r = JB(e, s, -this.toArrowLocation[It])).x, s = r.y);
        var h = this[JM][Af] || this[JM][Df];
        if (this[KM].hitTest(e, s, n, !0, this[JM][ma], h)) return !0
      }
      var r;
      if (this.$fromArrow && this.$fromArrowShape && (e = t - this[ZM].x, s = i - this[ZM].y, this[ZM][It] && (e = (r = JB(e, s, -this[ZM][It])).x, s = r.y), h = this[YM][Af] || this[YM].fillGradient, this[UM].hitTest(e, s, n, !0, this[YM].lineWidth, h))) return !0;
      return !1
    },
    $fromArrowOutline: 0,
    $toArrowOutline: 0,
    $invalidateFillGradient: !0,
    $invalidateFromArrow: !0,
    $invalidateToArrow: !0
  }, GC(pH, nH), sH(pH[_], {
    strokeStyle: {
      validateFlags: [lw, dw]
    },
    fillColor: {},
    fillGradient: {
      validateFlags: [MM]
    },
    fromArrowOffset: {
      validateFlags: [lw, hh]
    },
    fromArrowSize: {
      validateFlags: [lw, hh]
    },
    fromArrow: {
      validateFlags: [lw, hh]
    },
    fromArrowOutline: {
      validateFlags: [lw, hh]
    },
    fromArrowStroke: {
      validateFlags: [lw, hh]
    },
    fromArrowStrokeStyle: {
      validateFlags: [lw]
    },
    toArrowOffset: {
      validateFlags: [dw, hh]
    },
    toArrowSize: {
      validateFlags: [dw, hh]
    },
    toArrow: {
      validateFlags: [dw, hh]
    },
    toArrowOutline: {
      validateFlags: [dw, hh]
    },
    toArrowStroke: {
      validateFlags: [dw, hh]
    },
    toArrowStrokeStyle: {
      validateFlags: [dw]
    },
    outline: {
      value: 0,
      validateFlags: [uh]
    }
  }), TN(pH.prototype, {
    length: {
      get: function () {
        return this[bn].length
      }
    }
  }), MH[_] = {
    shape: null,
    path: null,
    initialize: function () {
      XC(this, MH, vw), this.path = new o$, this.path._f3 = !1, this.shape = new pH(this[ab]), this[jp](this[Um], 0), this._oAody = this[Um], dH[Qp](this)
    },
    _1J: !0,
    _5S: null,
    _$r: function () {
      return !1
    },
    _4B: function () {
      return !1
    },
    validatePoints: function () {
      this.shape.invalidateData();
      var t = this.$data,
        i = this[ab];
      i[Ot]();
      var n = t[Td],
        e = t[Od];
      n && e && function (g, t, i, n, e) {
        var s = n == e,
          h = g[Wp].getUI(n),
          r = s ? h : g.graph.getUI(e);
        if (h && r) {
          var a = t[Fv],
            o = g[bw](h),
            f = s ? o : g[bw](r),
            c = t[yw]();
          if (s && !c) return g.drawLoopedEdge(g[ab], h, a, o);
          var u, _, l, d, v, b, y, E, x = (v = g, b = o, y = h[gw](v.getStyle(oH[_x]), b), (E = v[Ny](oH.EDGE_FROM_OFFSET)) && (y.x += E.x || 0, y.y += E.y || 0), y),
            m = (u = g, _ = f, l = r[gw](u[Ny](oH[qm]), _), (d = u[Ny](oH[YE])) && (l.x += d.x || 0, l.y += d.y || 0), l);
          if (!s && !a && !c) {
            var p = n[Ew];
            if (p != e[Ew]) {
              var M, w, T, O;
              O = p ? (M = h, w = o, T = r, f) : (M = r, w = f, T = h, o);
              var A = function (t, i, n, e, s, h) {
                var r = s.cx,
                  a = s.cy,
                  o = Math.cos(h),
                  f = Math.sin(h),
                  c = kH(i, t, {
                    x: r,
                    y: a
                  }, -o, -f);
                if (!c) {
                  var u = r < t.x,
                    _ = r > t[$t],
                    l = a < t.y,
                    d = a > t[Ft],
                    v = t.cx,
                    b = t.cy,
                    y = u || _,
                    g = l || d;
                  h = Math[Ct](a - b, r - v), y || g || (h += Math.PI), c = kH(i, t, {
                    x: r,
                    y: a
                  }, -(o = Math.cos(h)), -(f = Math.sin(h))) || {
                    x: v,
                    y: b
                  }
                }
                var E = kH(e, s, {
                  x: c.x,
                  y: c.y
                }, -c[xw] || o, -c.perY || f, !1) || {
                  x: r,
                  y: a
                };
                return n ? [c, E] : [E, c]
              }(w, M, p, T, O, t[$o]);
              if (A && 2 == A[N]) {
                var S = A[0],
                  D = A[1];
                return i.moveTo(S.x, S.y), D.x == S.x && D.y == S.y && (D.y += .01), i[_a](D.x, D.y), i._6W = !0
              }
            }
          }
          g._3I(t, i, h, r, a, o, f, x, m), (!s && !1 !== i._hD[mw] || c) && function (t, i, n, e, s, h, r) {
            var a = g[Vm],
              o = g[zm];
            if (!a && !o) return RH(t._hD, h, r);
            var f = t._hD;
            if (f[N]) {
              if (a) PH(i, e, f[0][sa], h, I, I);
              if (o) {
                var c, u = f[f[N] - 1],
                  _ = u.lastPoint,
                  l = u[ps][N],
                  d = u.invalidTerminal || _.x === I || _.y === I;
                4 <= l && (d || s.contains(_.x, _.y)) && (d || (r = _), c = !0, _ = {
                  x: u[ps][l - 4],
                  y: u[ps][l - 3]
                }, s[jt](_.x, _.y) && (r = _, 6 <= l ? (_ = {
                  x: u[ps][l - 6],
                  y: u[ps][l - 5]
                }, u[ps] = u[ps][L](0, 4), u[Mi] = e$) : 1 == f[N] ? (_ = {
                  x: h.x,
                  y: h.y
                }, u[ps] = u.points.slice(0, 2), u[Mi] = n$) : _ = (u = f[f.length - 2])[ha])), PH(n, s, _, r, I, I), c && (l = u.points[N], u[ps][l - 2] = r.x, u[ps][l - 1] = r.y, r = null)
              }
            } else {
              var v = Math.atan2(r.y - h.y, r.x - h.x),
                b = Math.cos(v),
                y = Math.sin(v);
              a && PH(i, e, r, h, b, y), o && PH(n, s, h, r, -b, -y)
            }
            RH(t._hD, h, r)
          }(i, h, r, o, f, x, m), delete i._hD[mw], i._6W = !0
        }
      }(this, t, i, n, e)
    },
    getEndPointBounds: function (t) {
      return t[pw]()
    },
    _3I: function (t, i, n, e, s, h, r, a, o) {
      t[yw]() ? i[_b] = t.pathSegments[Dt]() : n != e ? this[Mw](i, n, e, s, h, r, a, o) : this.drawLoopedEdge(i, n, s, h, a, o)
    },
    drawLoopedEdge: function (t, i, n, e, s, h) {
      ! function (t, i, n) {
        var e = t[Ny](oH.EDGE_LOOPED_EXTAND),
          s = t._22(),
          h = e + .2 * s,
          r = i.x + i[Ht] - h,
          a = i.y,
          o = i.x + i.width,
          f = i.y + h;
        e += s;
        var c = {
            x: r,
            y: a
          },
          u = {
            x: i.x + i[Ht] + .707 * e,
            y: i.y + -.707 * e
          },
          _ = {
            x: o,
            y: f
          },
          l = c.x,
          d = u.x,
          v = _.x,
          b = c.y,
          y = u.y,
          g = _.y,
          E = ((g - b) * (y * y - b * b + d * d - l * l) + (y - b) * (b * b - g * g + l * l - v * v)) / (2 * (d - l) * (g - b) - 2 * (v - l) * (y - b)),
          x = ((v - l) * (d * d - l * l + y * y - b * b) + (d - l) * (l * l - v * v + b * b - g * g)) / (2 * (y - b) * (v - l) - 2 * (g - b) * (d - l)),
          m = (h = Math.sqrt((l - E) * (l - E) + (b - x) * (b - x)), Math.atan2(c.y - x, c.x - E)),
          p = Math[Ct](_.y - x, _.x - E) - m;
        p < 0 && (p += 2 * Math.PI),
          function (t, i, n, e, s, h, r) {
            var a, o, f, c, u, _, l, d, v, b;
            if (Math.abs(e) > 2 * Math.PI && (e = 2 * Math.PI), a = e / (c = Math.ceil(Math.abs(e) / (Math.PI / 4))), o = n, 0 < c) {
              u = t + Math.cos(o) * s, _ = i + Math.sin(o) * h, moveTo ? r[Ra](u, _) : r[_a](u, _);
              for (var y = 0; y < c; y++) f = (o += a) - a / 2, l = t + Math.cos(o) * s, d = i + Math.sin(o) * h, v = t + Math.cos(f) * (s / Math.cos(a / 2)), b = i + Math.sin(f) * (h / Math.cos(a / 2)), r[ub](v, b, l, d)
            }
          }(E, x, m, p, h, h, n)
      }(this, e, t)
    },
    drawEdge: function (t, i, n, e, s, h, r, a) {
      if (e == zB[ww]) {
        var o = (r.x + a.x) / 2,
          f = (r.y + a.y) / 2,
          c = r.x - a.x,
          u = r.y - a.y,
          _ = Math[Lt](c * c + u * u),
          l = Math[Ct](u, c);
        l += Math.PI / 6, 30 < (_ *= .04) && (_ = 30);
        var d = Math.cos(l) * _,
          v = Math.sin(l) * _;
        return t[_a](o - v, f + d), void t[_a](o + v, f - d)
      }
      var b = function (t, i, n, e, s, h) {
        if (i.hasPathSegments()) return i[Bv];
        var a, r, o, f, c, u, _, b, y, l, d, v, g, E, x, m, p = i[Fv];
        if ((m = p) == zB[Kw] || m == zB[Tw] || m == zB.EDGE_TYPE_HORIZONTAL_VERTICAL || m == zB[fT] || m == zB[Dw] || m == zB[Iw] || m == zB.EDGE_TYPE_EXTEND_LEFT || m == zB[Cw] || m == zB.EDGE_TYPE_EXTEND_RIGHT || m == zB[Lw] || m == zB[Rw] || m == zB.EDGE_TYPE_ELBOW_VERTICAL) {
          var M = (a = p, f = t, c = s, u = h, E = function (t, i) {
            if (null != a) {
              if (a == zB.EDGE_TYPE_ELBOW_HORIZONTAL || a == zB[Tw] || a == zB[Ow] || a == zB[Aw] || a == zB.EDGE_TYPE_EXTEND_RIGHT) return !0;
              if (a == zB[Sw] || a == zB.EDGE_TYPE_ORTHOGONAL_VERTICAL || a == zB[Dw] || a == zB[Iw] || a == zB.EDGE_TYPE_EXTEND_BOTTOM) return !1
            }
            var n, e, s, h, r = (s = t, h = i, Math.max(s.x + (s[Ht] || 0), h.x + (h.width || 0)) - Math.min(s.x, h.x) - (s[Ht] || 0) - (h[Ht] || 0));
            return (n = t, e = i, Math.max(n.y + (n.height || 0), e.y + (e[Xt] || 0)) - Math.min(n.y, e.y) - (n[Xt] || 0) - (e.height || 0)) <= r
          }(r = n, o = e), x = [], !a || a != zB[Lw] && a != zB[Rw] && a != zB[Sw] ? function (t, i, n, e, s, h, E, x) {
            var r, a, o, f, c, u, _ = h.getStyle(oH[Jm]),
              l = null == _;
            if (null != _) {
              var d = (new WN)[Pw](i)[Pw](n);
              d[ml](_) || (r = _.x, a = _.y, o = d.y, f = d.x, c = d.bottom, u = d[$t], s = !(a < o && f - r < o - a && r - u < o - a || c < a && f - r < a - c && r - u < a - c))
            } else _ = function (t, i, n, e, s) {
              if (t == zB[Ow]) return {
                x: x.x,
                y: E.y
              };
              if (t == zB.EDGE_TYPE_VERTICAL_HORIZONTAL) return {
                x: E.x,
                y: x.y
              };
              var h, r, a, o, f, c, u, _;
              if (null != t && (t == zB[Iw] || t == zB[Aw] || t == zB.EDGE_TYPE_EXTEND_BOTTOM || t == zB[kw])) {
                var l = Math.min(n.y, e.y),
                  d = Math.min(n.x, e.x),
                  v = Math.max(n[Ft], e[Ft]),
                  b = Math.max(n[$t], e[$t]);
                if (h = s[Ny](oH[jm]), t == zB.EDGE_TYPE_EXTEND_TOP) return new CN((d + b) / 2, l - h);
                if (t == zB.EDGE_TYPE_EXTEND_LEFT) return new CN(d - h, (l + v) / 2);
                if (t == zB[Cw]) return new CN((d + b) / 2, v + h);
                if (t == zB.EDGE_TYPE_EXTEND_RIGHT) return new CN(b + h, (l + v) / 2)
              }
              if ((h = s[Ny](oH.EDGE_SPLIT_BY_PERCENT) ? (r = i, a = n, o = e, f = s[Ny](oH[nx]), c = f, u = a, _ = o, (r ? OH(c, u.x, u[$t], _.x, _[$t]) : OH(c, u.y, u[Ft], _.y, _[Ft])) * f) : s.getStyle(oH[sx])) == Number[Nw] || h == Number[Bw]) return new CN(e.x + e[Ht] / 2, e.y + e[Xt] / 2);
              if (0 == h) return new CN(n.x + n[Ht] / 2, n.y + n[Xt] / 2);
              if (i) {
                var y = n.x + n[$t] < e.x + e.right;
                return new CN(AH(y, h, n.x, n[Ht]), n.y + n[Xt] / 2)
              }
              var g = n.y + n.bottom < e.y + e[Ft];
              return new CN(n.x + n.width / 2, AH(g, h, n.y, n.height))
            }(t, s, i, n, h);
            s ? function (t, i, n, e, s, h, r) {
              var a = Math.max(t.x, i.x),
                o = Math.min(t.x + t[Ht], i.x + i.width),
                f = null != n ? n.x : o + (a - o) / 2,
                c = h ? h.y : t.y + t.height / 2,
                u = r ? r.y : i.y + i.height / 2;
              if (0 == s && null != n && (n.y >= t.y && n.y <= t.y + t[Xt] && (c = n.y), n.y >= i.y && n.y <= i.y + i[Xt] && (u = n.y)), SH(i, f, c) || SH(t, f, c) || e[D](new CN(f, c)), SH(i, f, u) || SH(t, f, u) || e[D](new CN(f, u)), 0 == e[N])
                if (null != n) SH(i, f, n.y) || SH(t, f, n.y) || e.push(new CN(f, n.y));
                else {
                  var _ = Math.max(t.y, i.y),
                    l = Math.min(t.y + t[Xt], i.y + i.height);
                  e[D](new CN(f, _ + (l - _) / 2))
                }
            }(i, n, _, e, l, E, x) : function (t, i, n, e, s, h, r) {
              var a = Math.max(t.y, i.y),
                o = Math.min(t.y + t.height, i.y + i.height),
                f = null != n ? n.y : o + (a - o) / 2,
                c = h ? h.x : t.x + t[Ht] / 2,
                u = r ? r.x : i.x + i[Ht] / 2;
              if (0 == s && null != n && (n.x >= t.x && n.x <= t.x + t[Ht] && (c = n.x), n.x >= i.x && n.x <= i.x + i.width && (u = n.x)), SH(i, c, f) || SH(t, c, f) || e[D](new CN(c, f)), SH(i, u, f) || SH(t, u, f) || e[D](new CN(u, f)), 0 == e[N])
                if (null != n) SH(i, n.x, f) || SH(t, n.x, f) || e.push(new CN(n.x, f));
                else {
                  var _ = Math.max(t.x, i.x),
                    l = Math.min(t.x + t[Ht], i.x + i[Ht]);
                  e.push(new CN(_ + (l - _) / 2, f))
                }
            }(i, n, _, e, l, E, x)
          }(a, r, o, x, E, f, c, u) : (_ = E, b = r, y = o, l = x, d = f[Ny](oH.EDGE_EXTEND), v = c, g = u, _ ? function (t, i, n, e) {
            var s = y.x + y[Ht] < b.x,
              h = b.x + b[Ht] < y.x,
              r = s ? b.x : b.x + b.width,
              a = n.y,
              o = h ? y.x : y.x + y[Ht],
              f = e.y,
              c = i,
              u = s ? -c : c,
              _ = new CN(r + u, a),
              l = new CN(o + (u = h ? -c : c), f);
            if (s == h) {
              var d = s ? Math.min(r, o) - i : Math.max(r, o) + i;
              t[D](new CN(d, a)), t[D](new CN(d, f))
            } else if (_.x < l.x == s) {
              var v = a + (f - a) / 2;
              t[D](_), t[D](new CN(_.x, v)), t.push(new CN(l.x, v)), t[D](l)
            } else t[D](_), t.push(l)
          }(l, d, v, g) : function (t, i, n, e) {
            var s = y.y + y[Xt] < b.y,
              h = b.y + b[Xt] < y.y,
              r = n.x,
              a = s ? b.y : b.y + b[Xt],
              o = e.x,
              f = h ? y.y : y.y + y[Xt],
              c = i,
              u = s ? -c : c,
              _ = new CN(r, a + u),
              l = new CN(o, f + (u = h ? -c : c));
            if (s == h) {
              var d = s ? Math.min(a, f) - i : Math.max(a, f) + i;
              t[D](new CN(r, d)), t[D](new CN(o, d))
            } else if (_.y < l.y == s) {
              var v = r + (o - r) / 2;
              t.push(_), t.push(new CN(v, _.y)), t[D](new CN(v, l.y)), t[D](l)
            } else t.push(_), t[D](l)
          }(l, d, v, g)), x);
          if (!M || !M[N]) return null;
          BC(M, s, 0), M[D](h), p != zB.EDGE_TYPE_ELBOW && function (t, i) {
            var n = t[N];
            if (!(n < 3)) {
              var e = i[Ny](oH[Fw]);
              if (e != zB[$w]) {
                var s, h, r = i.getStyle(oH[ax]),
                  a = 0,
                  o = 0;
                r && (dN(r) ? a = o = r : (a = r.x || 0, o = r.y || 0));
                for (var f, c, u = t[0], _ = t[1], l = 2; l < n; l++) {
                  var d = t[l],
                    v = _.x - u.x,
                    b = _.y - u.y,
                    y = d.x - _.x,
                    g = d.y - _.y,
                    E = !b || -MF < b && b < MF;
                  ((!v || -MF < v && v < MF) && (!g || -MF < g && g < MF) || E && (!y || -MF < y && y < MF)) && (c = E ? (s = Math.min(2 == l ? Math.abs(v) : Math.abs(v) / 2, a), h = Math.min(l == n - 1 ? Math.abs(g) : Math.abs(g) / 2, o), f = new CN(_.x - (0 < v ? s : -s), _.y), new CN(_.x, _.y + (0 < g ? h : -h))) : (s = Math.min(l == n - 1 ? Math.abs(y) : Math.abs(y) / 2, a), h = Math.min(2 == l ? Math.abs(b) : Math.abs(b) / 2, o), f = new CN(_.x, _.y - (0 < b ? h : -h)), new CN(_.x + (0 < y ? s : -s), _.y)), FC(t, _), l--, n--, f.x == u.x && f.y == u.y || (BC(t, f, l), l++, n++), e == zB.EDGE_CORNER_BEVEL ? (BC(t, c, l), l++, n++) : e == zB[Gw] && (BC(t, [_, c], l), l++, n++)), u = _, _ = d
                }
              }
            }
          }(M, t);
          for (var w = [], T = M[N], O = 1; O < T - 1; O++) {
            var A = M[O];
            bN(A) ? w.push(new a$(e$, [A[0].x, A[0].y, A[1].x, A[1].y])) : w[D](new a$(n$, [A.x, A.y]))
          }
          return w
        }
        if (i[Hw]) {
          var S = t._22();
          if (!S) return;
          return function (t, i, n, e, s, h) {
            i = FN(e, i.x, i.y, n.x, n.y), n = FN(s, n.x, n.y, i.x, i.y);
            var r = Math.PI / 2 + Math[Ct](n.y - i.y, n.x - i.x),
              a = t * Math.cos(r),
              o = t * Math.sin(r);
            i.x += a, i.y += o, n.x += a, n.y += o;
            var f = n.x - i.x,
              c = n.y - i.y;
            if (h != zB.EDGE_BUNDLE_TYPE_PARALLEL) return h != zB[Cr] ? [new a$(s$, [i.x + .25 * f, i.y + .25 * c, i.x + .75 * f, i.y + .75 * c, I, I])] : (10 < Math[Lt](f * f + c * c) && (r = Math[Ct](n.y - i.y, n.x - i.x), f = 5 * Math.cos(r), c = 5 * Math.sin(r), i.x += f, i.y += c, n.x -= f, n.y -= c), [new a$(n$, [i.x, i.y]), new a$(n$, [n.x, n.y])]);
            var u = [new a$(i$, [i.x, i.y]), new a$(n$, [n.x, n.y])];
            return u._linkTerminalPoint = !1, u
          }(S, s, h, n, e, t.getStyle(oH[VE]))
        }
      }(this, this[bn], s, h, r, a);
      b && (t._hD = b)
    },
    _22: function () {
      if (!this[bn][Xw]()) return null;
      var t = this[bn].getEdgeBundle(!0);
      if (!t || !t[Ww](this.graph) || !t._iD) return null;
      var i = t[Uw](this);
      return t[Yw](this[Eu]) || (i = -i), i
    },
    checkBundleLabel: function () {
      var t = this[jw]();
      t ? (this[Tp] || this[Zw](), this.bundleLabel._j9 = !0, this[Tp].data = t) : this[Tp] && (this[Tp]._j9 = !1, this[Tp][bn] = null)
    },
    createBundleLabel: function () {
      var t = new mH;
      t.editable = !1, this[Tp] = t, this[jp](this[Tp]), vH[Qp](this)
    },
    getBundleLabel: function () {
      return this.graph[jw](this.data)
    },
    doValidate: function () {
      return this._1J && (this._1J = !1, this[Qw]()), this[Vw](), XC(this, MH, My)
    },
    _4D: function () {
      this._1J = !0, this.invalidateSize()
    },
    _$w: function (t, i, n) {
      var e = this._oBV[Yp](this, t, i, n);
      return e = fH.onBindingPropertyChange(this, t, i, n) || e, this[Tp] && this[Tp][Eu] && (e = vH[Yp](this, t, i, n) || e), dH[Yp](this, t, i, n) || e
    }
  }, GC(MH, gH), MH.drawReferenceLine = function (t, i, n, e) {
    if (t[Ra](i.x, i.y), e && e != zB.EDGE_TYPE_DEFAULT) {
      if (e == zB[Dw]) t[_a](i.x, n.y);
      else if (e == zB.EDGE_TYPE_HORIZONTAL_VERTICAL) t[_a](n.x, i.y);
      else if (0 == e[b](zB[Kw])) {
        r = e == zB[Tw] || e != zB.EDGE_TYPE_ORTHOGONAL_VERTICAL && Math.abs(i.x - n.x) > Math.abs(i.y - n.y);
        var s = (i.x + n.x) / 2,
          h = (i.y + n.y) / 2;
        r ? (t[_a](s, i.y), t[_a](s, n.y)) : (t[_a](i.x, h), t.lineTo(n.x, h))
      } else if (0 == e[b](zB[Lw])) {
        var r, a = TH[oH[jm]] || 0;
        (r = e == zB[Rw] || e != zB.EDGE_TYPE_ELBOW_VERTICAL && Math.abs(i.x - n.x) > Math.abs(i.y - n.y)) ? (t[_a](i.x + a, i.y), t[_a](n.x - a, n.y)) : (t[_a](i.x, i.y + a), t.lineTo(n.x, n.y - a))
      } else if (0 == e[b](zw))
        if (a = TH[oH[jm]] || 0, e == zB[Iw]) {
          var o = Math.min(i.y, n.y) - a;
          t[_a](i.x, o), t[_a](n.x, o)
        } else if (e == zB[Cw]) o = Math.max(i.y, n.y) + a, t[_a](i.x, o), t[_a](n.x, o);
      else if (e == zB[Aw]) {
        var f = Math.min(i.x, n.x) - a;
        t[_a](f, i.y), t.lineTo(f, n.y)
      } else e == zB.EDGE_TYPE_EXTEND_RIGHT && (f = Math.max(i.x, n.x) + a, t[_a](f, i.y), t.lineTo(f, n.y));
      else if (e == zB[ww]) {
        s = (i.x + n.x) / 2, h = (i.y + n.y) / 2;
        var c = i.x - n.x,
          u = i.y - n.y,
          _ = Math.sqrt(c * c + u * u),
          l = Math[Ct](u, c);
        l += Math.PI / 6, 30 < (_ *= .04) && (_ = 30);
        var d = Math.cos(l) * _,
          v = Math.sin(l) * _;
        t.lineTo(s - v, h + d), t[_a](s + v, h - d)
      }
      t[_a](n.x, n.y)
    } else t[_a](n.x, n.y)
  }, TN(MH[_], {
    length: {
      get: function () {
        return this[ab] ? this[ab][N] : 0
      }
    }
  }), MH[_].addPoint = function (t, i, n) {
    var e = c$(this[ab], t, i, this[bn][Jw], n);
    if (!e) return !1;
    var s = e[_b];
    if (2 < s[N]) {
      var h = this[bn],
        r = s[s.length - 1];
      r[Mi] == n$ ? h.pathSegments = s[M](1, s[N] - 2) : (e[qw] && (r[hf] = !0), h[tT] = s[M](1, s[N] - 1))
    }
  }, wH[_] = {
    _2N: null,
    image: null,
    initialize: function () {
      XC(this, wH, vw), this[iT](), _H[Qp](this)
    },
    _oBW: function () {
      this.data.image ? this[Io] && (this[no] = this.image) : this[Gu] && (this[no] = this[Gu])
    },
    _oAH: function () {
      this[Io] = new xH, this[jp](this.image, 0), this[Om]()
    },
    doValidate: function () {
      this[no] && (this instanceof $H && !this[Eu][Zb] && this._5W() ? this[no][Qc] = !1 : (this[no][Qc] = null != this._2N, this[no].anchorPosition = this._2N));
      var t = this[Eu][Jv],
        i = 0,
        n = 0;
      t && (i = t.x, n = t.y);
      var e = this.$x != i || this.$y != n;
      return e && (this[cM] = !0), this.$x = i, this.$y = n, gH.prototype[My].call(this) || e
    },
    _$w: function (t, i, n) {
      var e = this._oBV[Yp](this, t, i, n);
      return e = fH.onBindingPropertyChange(this, t, i, n) || e, _H[Yp](this, t, i, n) || e
    },
    getLinkablePorts: function () {
      return this[bn].linkablePorts
    },
    getLinkableBounds: function () {
      return this[nT]
    },
    getDefaultPortPoint: function (t) {
      return zN(YN[_i], t || this.getLinkableBounds())
    },
    getPortPoint: function (t, i) {
      return t ? ((i = i || this[pw]()).original ? (n = zN(t, i[eT]), i[It] && (n = qB(n.x, n.y, i[It], i[sT] || 0, i[hT] || 0)), n.x += i.tx || 0, n.y += i.ty || 0) : n = zN(t, i), n[rT] = t, n) : this[aT](i);
      var n
    },
    getPortPoints: function () {
      var t = this[oT]();
      if (t && Array.isArray(t)) {
        var i = [],
          n = this[pw]();
        return t[At](function (t) {
          i[D](this[gw](t, n))
        }.bind(this)), i
      }
    }
  }, GC(wH, gH);
  var TH = {};

  function OH(t, i, n, e, s) {
    var h, r, a, o, f = (h = i, r = n, a = e, o = s, Math.max(r, o) - Math.min(h, a) - (r - h + o - a)),
      c = i + n < e + s;
    if (0 < f) {
      if (1 == t) return f + (s - e) / 2;
      if (0 <= t && t < 1) return f;
      if (t < 0) return c ? e - i : n - s
    }
    return c && 0 < t || !c && t < 0 ? Math.abs(n - s) : Math.abs(i - e)
  }

  function AH(t, i, n, e) {
    return t == 0 < i ? n + e + Math.abs(i) : n - Math.abs(i)
  }

  function SH(t, i, n) {
    return i >= t.x && i <= t[$t] && n >= t.y && n <= t[Ft]
  }

  function DH(t, i) {
    var n, e;
    i && i[Ht] && i[Xt] ? (n = i.width, e = i[Xt]) : n = e = isNaN(i) ? IN[Gr] : i;
    var s = ZG[vb](t, -n, -e / 2, n, e);
    return s || ((s = new o$)[Ra](-n, -e / 2), s.lineTo(0, 0), s[_a](-n, e / 2)), s
  }

  function IH(t, i) {
    var n = Math.sin(i),
      e = Math.cos(i),
      s = t.x,
      h = t.y;
    return t.x = s * e - h * n, t.y = s * n + h * e, t
  }

  function LH(t, i, n, e, s, h) {
    var r = Math.atan2(e - i, n - t),
      a = new CN(s, h);
    return a[It] = r, IH(a, r), a.x += t, a.y += i, a
  }

  function RH(t, i, n) {
    if (BC(t, new a$(i$, [i.x, i.y]), 0), n) {
      if (1 < t[N]) {
        var e = t[t[N] - 1];
        if (e$ == e.type && (e[hf] || e[ps][2] === I || null === e[ps][2])) return e[ps][2] = n.x, e[ps][3] = n.y, void(e.invalidTerminal = !0);
        if (s$ == e.type && (e.invalidTerminal || e[ps][4] === I || null === e[ps][4])) return e.points[4] = n.x, e.points[5] = n.y, void(e[hf] = !0)
      }
      t[D](new a$(n$, [n.x, n.y]))
    }
  }

  function PH(t, i, n, e, s, h) {
    if (s === I) {
      var r = Math.atan2(n.y - e.y, n.x - e.x);
      s = Math.cos(r), h = Math.sin(r)
    }
    for (n = {
        x: n.x,
        y: n.y
      }, i[jt](n.x, n.y) || (n = FN(i, e.x, e.y, n.x, n.y));;) {
      if (!i.contains(n.x, n.y)) return e;
      if (t.hitTest(n.x - s, n.y - h, IN[cT])) {
        e.x = n.x - s / 2, e.y = n.y - h / 2;
        break
      }
      n.x -= s, n.y -= h
    }
    return e
  }

  function kH(t, i, n, e, s, h) {
    return i.contains(n.x, n.y) ? !1 === h ? CH(t, i, n, e, s) : CH(t, i, {
      x: n.x,
      y: n.y,
      perX: e,
      perY: s
    }, e, s) || CH(t, i, n, -e, -s) : (n = function t(i, n, e, s, h, r) {
      var a, o, f = n < i.x,
        c = n > i[$t],
        u = e < i.y,
        _ = e > i[Ft];
      return f && 0 < s && (a = e + (i.x - n) * h / s) >= i.y && a <= i[Ft] ? {
        x: i.x,
        y: a,
        perX: s,
        perY: h
      } : c && s < 0 && (a = e + (i[$t] - n) * h / s) >= i.y && a <= i.bottom ? {
        x: i[$t],
        y: a,
        perX: s,
        perY: h
      } : u && 0 < h && (o = n + (i.y - e) * s / h) >= i.x && o <= i.right ? {
        x: o,
        y: i.y,
        perX: s,
        perY: h
      } : _ && h < 0 && (o = n + (i.bottom - e) * s / h) >= i.x && o <= i[$t] ? {
        x: o,
        y: i[Ft],
        perX: s,
        perY: h
      } : !1 !== r ? t(i, n, e, -s, -h, !1) : void 0
    }(i, n.x, n.y, e, s, h)) ? CH(t, i, n, n[xw], n.perY) : void 0
  }

  function CH(t, i, n, e, s) {
    for (;;) {
      if (!i[jt](n.x, n.y)) return;
      if (t.hitTest(n.x + e, n.y + s)) break;
      n.x += e, n.y += s
    }
    return n
  }

  function NH(t) {
    return UF(t) ? t : t[e](/.(gif|jpg|jpeg|png)$/gi) || /^data:image\/(\w+\+?\w+);base64,/i [A](t) ? t : (t = ON(t)) instanceof Object && t[Wa] ? t : void 0
  }

  function BH(t, i) {
    this._$u = new oB, this._$u.on(function (t) {
      Cb == t[wi] && this.invalidateVisibility()
    }, this), this._1I = new oB, this._1I[Zi](function (t) {
      !this[Cb] || t[wi] != fB.KIND_CLEAR && t.kind != fB.KIND_REMOVE || this[sv][jt](this[Cb]) || (this.currentSubNetwork = null)
    }, this), this._$a = new oB, this._13 = new oB, this._$k = new oB, this._$o = new oB, this[sv] = i || new qG, this._96 = new yG(this, t), this._34 = new TX(this), this._1B = new oB, this[yT] = MB(u, gT, function (t) {
      this.updateViewport()
    }, !1, this), this._96._oAU[ET] = function (t) {
      this[ET](t)
    }.bind(this), this._96[Yl][xT] = function (t) {
      this[xT](t)
    } [ns](this)
  }

  function FH(t) {
    for (var i = t[Ci]; i;) {
      if (i[Yd]) return i;
      i = i[Ci]
    }
    return null
  }

  function $H(t, i) {
    HC(this, $H, arguments)
  }
  TH[oH[$r]] = IN[$r], TH[oH[Vx]] = IN.SELECTION_BORDER, TH[oH[Fr]] = IN.SELECTION_SHADOW_BLUR, TH[oH[Nr]] = zB.SELECTION_TYPE_SHADOW, TH[oH[Kx]] = 2, TH[oH.SELECTION_SHADOW_OFFSET_Y] = 2, TH[oH[Dg]] = IN[Dg], TH[oH.LABEL_POSITION] = YN[li], TH[oH[Sg]] = YN[ci], TH[oH[cm]] = new UN(0, 2), TH[oH[Fg]] = 8, TH[oH[_m]] = 8, TH[oH[Gg]] = !0, TH[oH[Kg]] = 0, TH[oH[qg]] = uM, TH[oH[eE]] = !0, TH[oH[iE]] = null, TH[oH.LABEL_BACKGROUND_GRADIENT] = null, TH[oH[CE]] = uT, TH[oH[PE]] = 1.5, TH[oH.EDGE_FROM_AT_EDGE] = !0, TH[oH[Km]] = !0, TH[oH[_E]] = MN(3438210798), TH[oH[bE]] = 1, TH[oH.GROUP_STROKE_STYLE] = uM, TH[oH[fb]] = !0, TH[oH[yx]] = IN[Gr], TH[oH.ARROW_TO_SIZE] = IN[Gr], TH[oH[_T]] = 10, TH[oH.EDGE_CORNER_RADIUS] = 8, TH[oH.EDGE_CORNER] = zB[Gw], TH[oH.EDGE_SPLIT_BY_PERCENT] = !0, TH[oH.EDGE_EXTEND] = 20, TH[oH[nx]] = .5, TH[oH[sx]] = 20, TH[oH[lT]] = 20, TH[oH.EDGE_BUNDLE_LABEL_ANCHOR_POSITION] = YN.CENTER_BOTTOM, TH[oH[dT]] = YN[ci], TH[oH[ME]] = vT, TH[oH.SHAPE_STROKE] = 1, TH[oH.SHAPE_STROKE_STYLE] = bT, TH[oH[xm]] = IN[uf], TH[oH[mm]] = 1, IN[cT] = 2, TN(BH[_] = {
    originAtCenter: !0,
    editable: !1,
    ondragover: function (t) {
      KB[mT](t)
    },
    getDropInfo: function (t, i) {
      var n = null;
      if (i) try {
        n = JSON[ph](i)
      } catch (t) {}
      return n
    },
    ondrop: function (t) {
      var i = t[pT];
      if (i) {
        var n = i.getData(MT),
          e = this[wT](t, n);
        e || ((e = {})[Io] = i[ds](Io), e.type = i.getData(Mi), e[Gu] = i[ds](Gu), e[Zb] = i.getData(Zb));
        var s = this.globalToLocal(t);
        if (s = this[nd](s.x, s.y), !(this[TT] instanceof Function && !1 === this[TT].call(this, t, s, e)) && (e.image || e[Gu] || e.type)) {
          var h, r = e[Io],
            a = e[Mi],
            o = e.label,
            f = e[Zb];
          if (KB[mT](t), a && OT != a ? Kb == a ? h = this.createText(o, s.x, s.y) : lb == a ? h = this.createShapeNode(o, s.x, s.y) : Qb == a ? (h = this[AT](o, s.x, s.y), (f = f && NH(f)) && (h[Zb] = f)) : (a = ON(a)) instanceof Function && a.prototype instanceof UG && ((h = new a)[T] = o, h[k_] = new CN(s.x, s.y), this._lZModel.add(h)) : h = this[ST](o, s.x, s.y), h) {
            if ((r = r && NH(r)) && (h[Io] = r), t[E_]) {
              var c = this.getElementByMouseEvent(t);
              c && this[DT](c) && (h[Ci] = c)
            }
            if (e[IT])
              for (var u in e[IT]) h[u] = e[IT][u];
            if (e[LT])
              for (var u in e[LT]) h.set(u, e[LT][u]);
            if (e.styles && h[Dv](e.styles), !1 === this[RT](h, t, e)) return !1;
            var _ = new wX(this, wX.ELEMENT_CREATED, t, h);
            return this[PT](_), h
          }
        }
      }
    },
    _oB6: function (t) {
      return t[Yd] || t instanceof tH || t.droppable
    },
    enableDoubleClickToOverview: !0,
    _96: null,
    _$u: null,
    _1I: null,
    _$a: null,
    _$o: null,
    _13: null,
    _$k: null,
    _1V: function (t) {
      return this._$u[w](t)
    },
    _50: function (t) {
      this._$u[Wi](t), vl == t[wi] && this[kT]()
    },
    isVisible: function (t) {
      return this._96._f8(t)
    },
    isMovable: function (t) {
      return (t instanceof UG || t instanceof GG && t[yw]()) && !1 !== t.movable
    },
    isSelectable: function (t) {
      return !1 !== t[CT]
    },
    isEditable: function (t) {
      return !1 !== t[NT]
    },
    isRotatable: function (t) {
      return !1 !== t[vm]
    },
    isResizable: function (t) {
      return !1 !== t[BT]
    },
    canLinkFrom: function (t) {
      return !1 !== t[FT] && !1 !== t[$T]
    },
    canLinkTo: function (t, i) {
      return !(!1 === t[FT] || !1 === t.canLinkTo || i instanceof KB.Group && t[gv](i) || t instanceof KB[Qb] && i[gv](t))
    },
    isEndPointEditable: function (t, i) {
      return !1 !== t[GT]
    },
    createNode: function (t, i, n) {
      var e = new UG(t, i, n);
      return this[fv].add(e), e
    },
    createText: function (t, i, n) {
      var e = new iH(t, i, n);
      return this[fv].add(e), e
    },
    createShapeNode: function (t, i, n, e) {
      dN(i) && (e = n, n = i, i = null);
      var s = new jG(t, i);
      return s[Jv] = new CN(n, e), this[fv].add(s), s
    },
    createGroup: function (t, i, n) {
      var e = new tH(t, i, n);
      return this[fv].add(e), e
    },
    createEdge: function (t, i, n) {
      if (t instanceof UG) {
        var e = n;
        n = i, i = t, t = e
      }
      var s = new GG(i, n);
      return t && (s[Lv] = t), this._lZModel.add(s), s
    },
    addElement: function (t, i) {
      this[fv].add(t), i && t[p]() && t[HT](function (t) {
        this[XT](t, i)
      }, this)
    },
    removeElement: function (t) {
      this[fv][en](t)
    },
    clear: function () {
      this[fv][Ot]()
    },
    getStyle: function (t, i) {
      var n = t._kF[i];
      return n !== I ? n : this.getDefaultStyle(i)
    },
    getDefaultStyle: function (t) {
      if (this._kF) {
        var i = this._kF[t];
        if (i !== I) return i
      }
      return TH[t]
    },
    _32: function (t, i) {
      if (!this[WT] || this[WT][jt](this[ov])) return i && i(), !1;
      t = this._2F(), this[UT]();
      var n, e, s, h = this[ov],
        r = this[WT],
        a = h[Ht] / this.limitedBounds[Ht],
        o = h[Xt] / this[WT][Xt];
      if (a <= 1 && o <= 1) return n = r[Jt] > h.left ? r[Jt] : r[$t] < h.right ? h[Jt] - (h.right - r[$t]) : h[Jt], e = r.top > h.top ? r.top : r[Ft] < h[Ft] ? h.top - (h[Ft] - r[Ft]) : h.top, void this.translateTo(-n * this[wo], -e * this[wo], this.scale, !1, i);
      var f = o < a;
      s = Math.max(a, o), f ? (n = r.x, (e = r.y + (h.top - r.top) * (1 - s) / s) >= r.y ? e = r.y : e < r[Ft] - h.height / s && (e = r.bottom - h[Xt] / s)) : (e = r.y, (n = r.x + (h.left - r.left) * (1 - s) / s) >= r.x ? n = r.x : n < r[$t] - h.width / s && (n = r[$t] - h.width / s)), n *= s *= this[wo], e *= s, this[Cd](-n, -e, s, t, i)
    },
    checkLimitedBounds: function (t) {
      if (this[YT] || !this[WT] || this.limitedBounds[jt](this[ov])) return !1;
      this._oBheckingBounds = !0, this[jT](function () {
        this._32(t, function () {
          this._oBheckingBounds = !1
        } [ns](this))
      }, this)
    },
    zoomByMouseEvent: function (t, i, n, e) {
      var s = this[ZT](t);
      return F == typeof i ? this[QT](Math.pow(1.1, i), s.x, s.y, n, e) : i ? this[VT](s.x, s.y, n, e) : this[KT](s.x, s.y, n, e)
    },
    resetScale: 1,
    translate: function (t, i, n) {
      return this[Cd](this.tx + t, this.ty + i, this[wo], n)
    },
    translateTo: function (t, i, n, e, s) {
      if (n = n && Math.min(this.maxScale, Math.max(this[zT], n)), !e) {
        var h = this._96[JT](t, i, n);
        return s && s(), h
      }
      this._6G()._mI(t, i, n, e, s)
    },
    centerTo: function (t, i, n, e, s) {
      return (!n || n <= 0) && (n = this[wo]), e === I && (e = this._2F()), this[Cd](this[Ht] / 2 - t * n, this[Xt] / 2 - i * n, n, e, s)
    },
    moveToCenter: function (t, i) {
      if (!1 !== arguments[2] && this._96.isInvalidate()) return this._96._oAE || (i = !1), this[jT](this.moveToCenter[ns](this, t, i, !1));
      var n = this.bounds;
      this.centerTo(n.cx, n.cy, t, i)
    },
    zoomToOverview: function (t, i) {
      if (!1 !== arguments[2] && this._96[qT]()) return this._96._oAE || (t = !1), this[jT](this[tO][ns](this, t, i, !1));
      var n = this._96._1R();
      n && (i && (n[wo] = Math.min(n[wo], i)), this[iO](n.cx, n.cy, n[wo], t))
    },
    _2F: function () {
      return !!this._96[xe] && (this[nO] === I || null === this.zoomAnimation ? IN[eO] : this[nO])
    },
    zoomAt: function (t, i, n, e, s) {
      e === I && (e = this._2F()), i === I && (i = this.width / 2), i = i || 0, n === I && (n = this[Xt] / 2), n = n || 0;
      var h = this[wo];
      return i = (t = Math.min(this.maxScale, Math.max(this[zT], h * t))) * (this.tx - i) / h + i, n = t * (this.ty - n) / h + n, this[Cd](i, n, t, e, s)
    },
    zoomOut: function (t, i, n, e) {
      return this[QT](1 / this[sO], t, i, n, e)
    },
    zoomIn: function (t, i, n, e) {
      return this[QT](this.scaleStep, t, i, n, e)
    },
    _6G: function () {
      return this[hO] || (this[hO] = new QH(this)), this._panAnimation
    },
    onAnimationStart: function () {},
    onAnimationEnd: function () {},
    isAnimating: function () {
      return this[hO] && this[hO]._f0()
    },
    enableInertia: !0,
    _o8O: function (t, i) {
      return this._6G()._i7(t || 0, i || 0)
    },
    stopAnimation: function () {
      this[hO] && this[hO]._n3()
    },
    getUI: function (t) {
      return AN(t) ? this._96._3T(t) : this._96._m1(t)
    },
    getUIByMouseEvent: function (t) {
      return this._96._3T(t)
    },
    hitTest: function (t) {
      return this._96[Do](t)
    },
    globalToLocal: function (t) {
      return this._96._8G(t)
    },
    toCanvas: function (t, i) {
      return this._96._i0(t, i)
    },
    toLogical: function (t, i) {
      return AN(t) ? this._96._$f(t) : this._96._fH(t, i)
    },
    getElementByMouseEvent: function (t) {
      var i = this._96._3T(t);
      if (i) return i[Eu]
    },
    getElement: function (t) {
      return AN(t) ? this[vs](t) : this._lZModel[wt](t)
    },
    invalidate: function () {
      this._96._d0()
    },
    invalidateUI: function (t) {
      t.invalidate(), this[ll]()
    },
    invalidateElement: function (t) {
      this._96._3X(t)
    },
    getUIBounds: function (t) {
      return this._96._2T(t)
    },
    forEachVisibleUI: function (t, i) {
      return this._96._4R(t, i)
    },
    forEachReverseVisibleUI: function (t, i) {
      return this._96._$y(t, i)
    },
    forEachUI: function (t, i) {
      return this._96._f9(t, i)
    },
    forEachReverseUI: function (t, i) {
      return this._96._4S(t, i)
    },
    forEach: function (t, i) {
      return this[fv][At](t, i)
    },
    getElementByName: function (i) {
      var n;
      return this[At](function (t) {
        if (t[T] == i) return n = t, !1
      }), n
    },
    focus: function (t) {
      if (t) {
        var i = u[rO] || u[zl],
          n = u.scrollY || u[ql];
        return this.canvasPanel[aO](), void u[oO](i, n)
      }
      this.canvasPanel[aO]()
    },
    callLater: function (t, i, n) {
      this._96._e1(t, i, n)
    },
    exportImage: function (t, i, n) {
      return function (t, i, n, e) {
        var s = t[ of ];
        n = n || s, i = i || 1;
        var h = rF();
        O$(h.g), h[Ht] = n[Ht] * i, h[Xt] = n[Xt] * i, t._96._hY(h.g, i, n);
        var r = null;
        try {
          r = h[fO](e || cO)
        } catch (t) {
          KB.error(t)
        }
        return {
          canvas: h,
          data: r,
          width: h[Ht],
          height: h[Xt]
        }
      }(this, t, i, n)
    },
    setSelection: function (t) {
      return this[fv][wn].set(t)
    },
    select: function (t) {
      return this._lZModel[wn][uO](t)
    },
    unselect: function (t) {
      return this[fv][wn][_O](t)
    },
    reverseSelect: function (t) {
      return this[fv][wn][lO](t)
    },
    selectAll: function () {
      var i, t, n;
      t = (i = this).selectionModel, n = [], i[sv].forEach(function (t) {
        i[dO](t) && i[vO](t) && n.push(t)
      }), t.set(n)
    },
    unSelectAll: function () {
      this[tv].clear()
    },
    unselectAll: function () {
      this[bO]()
    },
    isSelected: function (t) {
      return this._lZModel._selectionModel[jt](t)
    },
    sendToTop: function (t) {
      if (function (t, i) {
          if (i instanceof GG) i[yv]() || function (t, i) {
            var n = i[Td];
            if (i[Ad]()) FG(t, n);
            else {
              var e = i[Od];
              FG(t, n), FG(t, e)
            }
          }(t, i);
          else
            for (FG(t, i); i = i[Ci];) FG(t, i)
        }(this._lZModel, t), t instanceof GG) {
        var i = this[bs](t);
        if (i) {
          var n = this._96._o0;
          n.setIndex(i, n[N] - 1)
        }
      }
    },
    sendToBottom: function (t) {
      ! function (t, i) {
        if (i instanceof GG) i[yv]() || function (t, i) {
          var n = i.fromAgent;
          if (i[Ad]()) $G(t, n);
          else {
            var e = i[Od];
            $G(t, n), $G(t, e)
          }
        }(t, i);
        else
          for ($G(t, i); i = i.parent;) $G(t, i)
      }(this._lZModel, t)
    },
    moveElements: function (t, i, n) {
      var e = [],
        s = new LN;
      return PC(t, function (t) {
        t instanceof UG ? e[D](t) : t instanceof GG && s.add(t)
      }), this._fL(e, i, n, s)
    },
    _fL: function (t, n, e, i) {
      if (0 == n && 0 == e || 0 == t[N] && 0 == i[N]) return !1;
      if (0 != t.length) {
        var s = this._54(t);
        i = this._52(s, i), PC(s, function (t) {
          var i = t[Jv];
          i ? t[yO](i.x + n, i.y + e) : t[yO](n, e)
        })
      }
      return i && i.length && this._fM(i, n, e), !0
    },
    _fM: function (t, i, n) {
      t[At](function (t) {
        t[Ns](i, n)
      })
    },
    _52: function (i, n) {
      return this.graphModel[At](function (t) {
        t instanceof GG && this[gO](t) && i.contains(t.fromAgent) && i[jt](t[Od]) && n.add(t)
      }, this), n
    },
    _54: function (t) {
      var i = new LN;
      return PC(t, function (t) {
        this.isMovable(t), i.add(t),
          function i(t, n, e) {
            t._j8() && t.hasChildren() && t[y][At](function (t) {
              t instanceof UG && n.add(t) && i(t, n, e)
            }, this), t[tb]() && t._eM[At](function (t) {
              (null == e || e[yn](t)) && n.add(t) && i(t, n, e)
            })
          }(t, i, this[EO])
      }, this), i
    },
    reverseExpanded: function (t) {
      if (!t[Xw]()) return !1;
      var i = t[Sd](!0);
      return !!i && (!1 !== i.reverseExpanded() ? (this[ll](), !0) : void 0)
    },
    _34: null,
    _1B: null,
    beforeInteractionEvent: function (t) {
      return this._1B[w](t)
    },
    onInteractionEvent: function (t) {
      this._1B.onEvent(t)
    },
    addCustomInteraction: function (t) {
      this._34.addCustomInteraction(t)
    },
    removeCustomInteraction: function (t) {
      this._34[xO](t)
    },
    enableWheelZoom: !0,
    enableTooltip: !0,
    getTooltip: function (t) {
      return t.tooltip || t.name
    },
    updateViewport: function () {
      this._96._86()
    },
    destroy: function () {
      var t;
      this._50(new iB(this, ms, !0, this._iWed)), this[Pu] = !0, this._onresize && (t = this[yT], u[Me](gT, t)), this._34.destroy(), this.graphModel = new qG;
      var i = this[mO];
      this._96._iW(), i && (i.innerHTML = "")
    },
    onPropertyChange: function (i, n, e) {
      this._$u[Zi](function (t) {
        t[wi] == i && n[m](e, t)
      })
    },
    removeSelection: function () {
      var t = this[tv]._kH;
      return !(!t || 0 == t[N]) && (t = t[L](), this._lZModel.remove(t), t)
    },
    removeSelectionByInteraction: function (n) {
      var t = this.selectionModel.datas;
      if (!t || 0 == t[N]) return !1;
      KB.confirm(pO + t[N], function () {
        var t = this[MO]();
        if (t) {
          var i = new wX(this, wX[wO], n, t);
          this.onInteractionEvent(i)
        }
      }, this)
    },
    createShapeByInteraction: function (t, i, n, e) {
      var s = new o$(i);
      2 < i.length && s[va]();
      var h = this.createShapeNode(TO, s, n, e);
      this.onElementCreated(h, t);
      var r = new wX(this, wX[OO], t, h);
      return this[PT](r), h
    },
    createLineByInteraction: function (t, i, n, e) {
      var s = new o$(i),
        h = this.createShapeNode(AO, s, n, e);
      h[$l](KB[SO][Am], null), h.setStyle(KB[SO][Rm], null), h[$l](KB.Styles[Sm], !0), this[RT](h, t);
      var r = new wX(this, wX[OO], t, h);
      return this.onInteractionEvent(r), h
    },
    createEdgeByInteraction: function (t, i, n, e, s, h) {
      var r = this[DO](IO, t, i);
      if (s && r[$l](KB[SO][_x], s), h && r[$l](KB.Styles[qm], h), e) r[Bv] = e;
      else {
        var a = this[LO],
          o = this[Fv];
        this.interactionProperties && (a = this[RO][Ud] || a, o = this[RO].edgeType || o), a && (r.uiClass = a), o && (r[Fv] = o)
      }
      this[RT](r, n);
      var f = new wX(this, wX[OO], n, r);
      return this[PT](f), r
    },
    onElementCreated: function (t, i, n) {
      !t[Ci] && this[Cb] && (t[Ci] = this.currentSubNetwork)
    },
    allowEmptyLabel: !1,
    startLabelEdit: function (i, n, t, e) {
      var s = this;
      t.startEdit(e.x, e.y, n[bn], this[Ny](i, oH[Lg]), function (t) {
        return s.onLabelEdit(i, n, t, n.parent)
      })
    },
    onLabelEdit: function (t, i, n, e) {
      if (!n && !this[PO]) return KB.alert(kO), !1;
      if (Gu == i[T]) {
        if (t[T] == n) return !1;
        t[T] = n
      } else !1 === e._gZ(i, n) && (i[bn] = n, this[CO](t))
    },
    setInteractionMode: function (t, i) {
      this[NO] = t, this.interactionProperties = i
    },
    upSubNetwork: function () {
      return !!this._3H && (this[Cb] = FH(this._3H))
    },
    _$p: !1,
    invalidateVisibility: function () {
      this._$p = !0, this[ll]()
    },
    getBundleLabel: function (t) {
      var i = t[Sd](!0);
      return i && i[BO] == t ? FO + i[$O].length : null
    },
    zoomAnimation: null,
    pauseRendering: function (t, i) {
      (this[GO] || i) && this._96._7P(t)
    },
    _56: I,
    enableRectangleSelectionByRightButton: !0,
    getLinkablePoints: function (t, i, n) {
      return t[HO]
    }
  }, {
    center: {
      get: function () {
        return this[nd](this[mO][Kn] / 2, this[mO][cd] / 2)
      }
    },
    visibleFilter: {
      get: function () {
        return this._j9Filter
      },
      set: function (t) {
        this._j9Filter = t, this[Nd]()
      }
    },
    topCanvas: {
      get: function () {
        return this._96._topCanvas
      }
    },
    propertyChangeDispatcher: {
      get: function () {
        return this._$u
      }
    },
    listChangeDispatcher: {
      get: function () {
        return this._1I
      }
    },
    dataPropertyChangeDispatcher: {
      get: function () {
        return this._$a
      }
    },
    selectionChangeDispatcher: {
      get: function () {
        return this._$o
      }
    },
    parentChangeDispatcher: {
      get: function () {
        return this._13
      }
    },
    childIndexChangeDispatcher: {
      get: function () {
        return this._$k
      }
    },
    interactionDispatcher: {
      get: function () {
        return this._1B
      }
    },
    cursor: {
      set: function (t) {
        this.canvasPanel[Yn].cursor = t || this._34[XO]
      },
      get: function () {
        return this[WO].style.cursor
      }
    },
    interactionMode: {
      get: function () {
        return this._34[UO]
      },
      set: function (t) {
        var i = this[NO];
        i != t && (this._34[YO] = t, this._50(new iB(this, NO, t, i)))
      }
    },
    scaleStep: {
      get: function () {
        return this._96._fC
      },
      set: function (t) {
        this._96._fC = t
      }
    },
    maxScale: {
      get: function () {
        return this._96._hK
      },
      set: function (t) {
        this._96._hK = t
      }
    },
    minScale: {
      get: function () {
        return this._96._hM
      },
      set: function (t) {
        this._96._hM = t
      }
    },
    scale: {
      get: function () {
        return this._96._scale
      },
      set: function (t) {
        return this._96[ke] = t
      }
    },
    tx: {
      get: function () {
        return this._96._tx
      }
    },
    ty: {
      get: function () {
        return this._96._ty
      }
    },
    styles: {
      get: function () {
        return this._kF
      },
      set: function (t) {
        this._kF = t
      }
    },
    selectionModel: {
      get: function () {
        return this[fv]._selectionModel
      }
    },
    graphModel: {
      get: function () {
        return this[fv]
      },
      set: function (t) {
        if (this[fv] == t) return !1;
        var i = this[fv],
          n = new iB(this, sv, i, t);
        if (!1 === this._1V(n)) return !1;
        null != i && (i[jO][Qi](this._$u, this), i[pn][Qi](this._1I, this), i[Tn].removeListener(this._$a, this), i[In].removeListener(this._13, this), i[ZO].removeListener(this._$k, this), i[Mn][Qi](this._$o, this)), this[fv] = t, this[fv] && (this._lZModel[jO][Zi](this._$u, this), this._lZModel[pn][Zi](this._1I, this), this[fv][Tn][Zi](this._$a, this), this[fv][In][Zi](this._13, this), this[fv][ZO].addListener(this._$k, this), this[fv][Mn][Zi](this._$o, this)), this._96 && this._96._mG(), this._50(n)
      }
    },
    count: {
      get: function () {
        return this[fv].length
      }
    },
    width: {
      get: function () {
        return this.html[Kn]
      }
    },
    height: {
      get: function () {
        return this[mO][cd]
      }
    },
    viewportBounds: {
      get: function () {
        return this._96[QO]
      }
    },
    bounds: {
      get: function () {
        return this._96._4T()
      }
    },
    canvasPanel: {
      get: function () {
        return this._96[Yl]
      }
    },
    html: {
      get: function () {
        return this._96._oAU.parentNode
      }
    },
    navigationType: {
      get: function () {
        return this._96._83
      },
      set: function (t) {
        this._96._41(t)
      }
    },
    _3H: {
      get: function () {
        return this[fv]._3H
      }
    },
    currentSubNetwork: {
      get: function () {
        return this[fv][Cb]
      },
      set: function (t) {
        this[fv].currentSubNetwork = t
      }
    },
    limitedBounds: {
      get: function () {
        return this._limitedBounds
      },
      set: function (t) {
        if (WN[ti](t, this[VO])) return !1;
        this._limitedBounds = t ? new WN(t) : null
      }
    },
    ratio: {
      get: function () {
        return this._96[jr]
      }
    },
    delayedRendering: {
      get: function () {
        return this._56 === I ? IN[KO] : this._56
      },
      set: function (t) {
        t != this.delayedRendering && (this._56 = t, this[zO](!1, !0))
      }
    },
    fullRefresh: {
      get: function () {
        return this._96.fullRefresh
      },
      set: function (t) {
        this._96[yl] = t
      }
    }
  }), IN[KO] = !0, IN[JO] = 60, IN[qO] = 60, $H[_] = {
    _oBW: function () {
      if (!this._5W()) return XC(this, $H, Om, arguments)
    },
    initialize: function () {
      XC(this, $H, vw), this[Xm]()
    },
    _oAI: function () {
      this._mU = new o$, this[Um] = new xH(this._mU), this[Um].layoutByPath = !1, this[jp](this[Um], 0), this[no] = this[Um]
    },
    checkBody: function () {
      if (this._5W()) return this._24 = !0, this.shape ? (this.shape[Wl] = !0, this.body = this[Um]) : (this[tA](), lH[Qp](this)), void(this.image && (this.image[Wl] = !1));
      this[Io] ? (this.image[Wl] = !0, this[no] = this[Io]) : this._oAH(), this.shape && (this[Um][Wl] = !1)
    },
    _5W: function () {
      return this[Eu]._j8() && this[Eu].expanded
    },
    _mU: null,
    _24: !0,
    _5X: function () {
      this._1L = !0, this._24 = !0
    },
    doValidate: function () {
      if (this._24 && this._5W()) {
        if (this._24 = !1, this[Um][Qd](), this[Eu][Zb]) {
          this[Um][bn] = this[Eu].groupImage;
          var t = this._26();
          return this.shape[fy] = t.x + t[Ht] / 2, this.shape[cy] = t.y + t[Xt] / 2, this[Um][dl] = {
            width: t.width,
            height: t[Xt]
          }, wH[_][My].call(this)
        }
        this[Um][fy] = 0, this[Um].offsetY = 0;
        var i = this._8S(this[Eu].groupType);
        if (this._mU.clear(), i instanceof WN) {
          var n = this[Ny](oH[dE]) || 0;
          QG(this._mU, i.x, i.y, i[Ht], i[Xt], i.rx || n, i.ry || n)
        } else i instanceof xF ? (e = this._mU, s = i.r || 1, h = i.cx || 0, r = i.cy || 0, a = s * Math.tan(Math.PI / 8), o = s * Math.sin(Math.PI / 4), e[Ra](h + s, r), e[ub](h + s, r + a, h + o, r + o), e[ub](h + a, r + s, h, r + s), e[ub](h - a, r + s, h - o, r + o), e[ub](h - s, r + a, h - s, r), e[ub](h - s, r - a, h - o, r - o), e[ub](h - a, r - s, h, r - s), e[ub](h + a, r - s, h + o, r - o), e[ub](h + s, r - a, h + s, r)) : i instanceof mF && VG(this._mU, i);
        this._mU._6W = !0, this[Um].invalidateData()
      }
      var e, s, h, r, a, o;
      return wH[_].doValidate.call(this)
    },
    _77: function (t, i, n, e, s) {
      switch (F != typeof e && (e = -i / 2), F != typeof s && (s = -n / 2), t) {
        case zB[iA]:
          return new xF(e + i / 2, s + n / 2, Math.max(i, n) / 2);
        case zB.GROUP_TYPE_ELLIPSE:
          return new mF(e + i / 2, s + n / 2, i, n);
        default:
          return new WN(e, s, i, n)
      }
    },
    _26: function () {
      return this._8S(null)
    },
    _8S: function (t) {
      var i = this[bn],
        n = i[Co],
        e = i[Yb],
        s = IN[JO],
        h = IN.GROUP_MIN_HEIGHT;
      if (e && (F == typeof e[Ht] && (s = e[Ht]), F == typeof e.height && (h = e[Xt]), E = e.x, x = e.y), !i[p]()) return this._77(t, s, h, E, x);
      var r, a = this[Eu]._gX._kH;
      t != zB.GROUP_TYPE_CIRCLE && t != zB[nA] || (r = []);
      for (var o, f, c, u, _ = new WN, l = 0, d = a.length; l < d; l++) {
        var v = a[l];
        if (this[Wp][dO](v) && !(v instanceof GG)) {
          var b = this[Wp][bs](v);
          b && (o = b.$x + b._h1.x, f = b.$y + b._h1.y, c = b._h1.width, u = b._h1[Xt], _.addRect(o, f, c, u), r && (r.push({
            x: o,
            y: f
          }), r.push({
            x: o + c,
            y: f
          }), r[D]({
            x: o + c,
            y: f + u
          }), r[D]({
            x: o,
            y: f + u
          })))
        }
      }
      if (_[Tt]()) return this._77(t, s, h, E, x);
      var y = this[Eu][Jv];
      y ? y[eA] && (y[eA] = !1, E === I && (y.x = _.cx), x === I && (y.y = _.cy)) : y = this[Eu].$location = {
        x: _.cx,
        y: _.cy
      }, n && _[nu](n), F == typeof E && E + y.x < _.x && (_.width += _.x - (E + y.x), _.x = E + y.x, r && r.push({
        x: _.x,
        y: _.cy
      })), F == typeof x && x + y.y < _.y && (_[Xt] += _.y - (_.y, x + y.y), _.y = x + y.y, r && r.push({
        x: _.cx,
        y: _.y
      }));
      var g, E = y.x,
        x = y.y;
      if (t != zB[iA]) return t == zB.GROUP_TYPE_ELLIPSE ? ((g = function (t, i) {
        for (var n, e = (i = i || function (t) {
            for (var i, n = t[N], e = new WN, s = 0; s < n; s++) i = t[s], e.add(i.x, i.y);
            return e
          }(t))[Ht] / i.height, s = [], h = t[N], r = 0; r < h; r++) n = t[r], s[D]({
          x: n.x,
          y: n.y * e
        });
        var a = pF(s);
        if (a) return new mF(a.cx, a.cy / e, 2 * a.r, 2 * a.r / e)
      }(r, _)).cx -= E, g.cy -= x, g.width < s && (g.cx += (s - g.width) / 2, g[Ht] = s), g[Xt] < h && (g.cy += (h - g[Xt]) / 2, g[Xt] = h)) : ((g = _)[Ht] < s && (_[Ht] = s), _.height < h && (_.height = h), _[ca](-E, -x)), g;
      (g = pF(r)).cx -= E, g.cy -= x;
      var m = Math.max(s, h) / 2;
      return g.r < m && (g.cx += m - g.r, g.cy += m - g.r, g.r = m), g
    },
    _$w: function (t, i, n) {
      if (!this._5W()) return XC(this, $H, sA, arguments);
      var e = this[Up].onBindingPropertyChange(this, t, i, n);
      return e = fH.onBindingPropertyChange(this, t, i, n) || e, e = _H.onBindingPropertyChange(this, t, i, n) || e, lH[Yp](this, t, i, n) || e
    }
  }, GC($H, wH), KB[hA] = $H, IN[rA] = null, IN.NAVIGATION_IMAGE_TOP = null;
  var GH = {
      position: sl,
      "text-align": IM
    },
    HH = {
      padding: aA,
      transition: oA
    },
    XH = {
      position: ol,
      display: fA
    };

  function WH(t, i, n, e, s, h, r) {
    var a = x[Bn](Fn);
    a.className = cA, gB(a, GH), i && gB(a, i);
    var o = x[Bn](qa);
    return h && (fN && (o[S] = h), OB || (o.onclick = h)), o[T] = r, o.src = n, gB(o, HH), s && gB(o, s), e && EB(o, Gl, uA), a._img = o, a.appendChild(o), t[eo](a), a
  }

  function UH(h, t) {
    if (!IN.NAVIGATION_IMAGE_LEFT) {
      var i = rF(20, 40),
        n = i.g;
      n.scale(n[jr], n[jr]), n[Ra](16, 4), n[_a](4, 20), n[_a](16, 36), n[ma] = 3, n[pf] = Vh, n[Mf] = Vh, n[pa] = Na, n[xo] = _A, n[mo] = 5, n[ka](), IN[rA] = i[fO]();
      var e = rF(i[Xt], i.width, !1);
      e.g.translate(e[Ht], 0), e.g[It](Math.PI / 2), e.g.drawImage(i, 0, 0), IN[lA] = e[fO]()
    }
    this._oAaseCanvas = h,
      function (t, i) {
        this[dA] = x[Bn](Fn), this[dA][jl] = vA, gB(this._navPane, {
          "background-color": bA,
          overflow: io,
          "user-select": Qh,
          position: ol
        }), this[yA] = WH(this[dA], {
          width: al
        }, IN[lA], !1, null, i, gA), this[EA] = WH(this[dA], {
          height: al
        }, IN[rA], !1, XH, i, Jt), this[xA] = WH(this[dA], {
          height: al,
          right: V_
        }, IN[rA], !0, XH, i, $t), this._oAottom = WH(this[dA], {
          width: al,
          bottom: V_
        }, IN[lA], !0, null, i, Ft), t[eo](this[dA])
      } [m](this, t, function (t) {
        var i, n;
        EN(t);
        var e = t[J_],
          s = e.name;
        if (Jt == s) i = 1;
        else if ($t == s) i = -1;
        else if (gA == s) n = 1;
        else {
          if (Ft != s) return;
          n = -1
        }
        fN && (e.className = mA, setTimeout(function () {
          e[jl] = ""
        }, 100)), EN(t), h._lZ[pA](i, n)
      }), this._3J(t[Kn], t[cd])
  }

  function YH(t, i) {
    this._oAaseCanvas = t, this[MA](i, t)
  }

  function jH(t, i) {
    HC(this, jH, arguments)
  }

  function ZH(t, i) {
    var n, e;
    this[X_] = t, this._k9 = (n = i, O$((e = rF(!0)).g), e[NA] = function () {
      return !1
    }, n[eo](e), e[jl] = fG, e), this.g = this._k9.g, this._9X = new LN
  }
  xB(wA, "opacity:0.7;vertical-align:middle;"), xB(".Q-Graph-Nav img:hover,img.hover", TA), fN || (xB(OA, AA + yB(SA) + DA), xB(IA, LA + yB(SA) + RA)), UH[_] = {
    _oBY: function (t, i) {
      if (t._j9 == i) return !1;
      t._j9 = i, t[Yn].visibility = i ? "visible" : io
    },
    _3J: function (t, i) {
      var n = i / 2 - this[EA]._img[cd] / 2 + Wr;
      this[EA][PA][Yn].top = n, this[xA][PA][Yn].top = n, this[dA].style.width = t + Wr, this[dA].style[Xt] = i + Wr
    },
    _9W: function (t, i, n, e) {
      this[kA](this._top, t), this[kA](this[EA], i), this[kA](this[CA], n), this[kA](this[xA], e)
    },
    _iW: function () {
      var t = this._navPane[Qa];
      t && t.removeChild(this[dA])
    },
    _kS: function () {
      var t = this._oAaseCanvas._lZ;
      if (t) {
        var i = t[ of ];
        if (i[Tt]()) this._9W(!1, !1, !1, !1);
        else {
          var n = t[ov],
            e = n.y > i.y + 1,
            s = n.x > i.x + 1,
            h = n[Ft] < i[Ft] - 1,
            r = n.right < i[$t] - 1;
          this._9W(e, s, h, r)
        }
      }
    }
  }, xB(BA, FA), xB($A, "background-color: #7E7E7E;" + yB(SA) + ": background-color 0.2s linear;"), xB(".Q-Graph-ScrollBar--V", "width: 8px;right: 0px;"), xB(".Q-Graph-ScrollBar--H", "height: 8px;bottom: 0px;"), xB(".Q-Graph-ScrollBar--V.Both", GA), xB(".Q-Graph-ScrollBar--H.Both", HA), fN || (xB(XA, AA + yB(SA) + WA), xB(".Q-Graph:hover .Q-Graph-ScrollPane", LA + yB(SA) + ":opacity 0.3s linear;")), YH.prototype = {
    _iW: function () {
      this[UA]._iW(), this._horizontalDragSupport._iW(), delete this[UA], delete this[YA], this._mW[Qa] && this._mW.parentNode[Va](this._mW)
    },
    _mW: null,
    _oAJ: null,
    _8U: null,
    init: function (t, i) {
      var n = x[Bn](Fn);
      n[jl] = jA, gB(n, {
        width: al,
        height: al,
        position: ol
      });
      var e = x.createElement(Fn);
      e[jl] = "Q-Graph-ScrollBar Q-Graph-ScrollBar--V";
      var s = x[Bn](Fn);
      s[jl] = "Q-Graph-ScrollBar Q-Graph-ScrollBar--H", n.appendChild(e), n[eo](s), t.appendChild(n), this._mW = n, this._8U = s, this[ZA] = e, s.isH = !0;
      var r = this,
        h = {
          onstart: function (t, i) {
            i[R].add(mA)
          },
          onrelease: function (t, i) {
            i.classList[en](mA)
          },
          ondrag: function (t, i) {
            var n = r._oAaseCanvas._lZ;
            if (n) {
              var e = i.isH,
                s = e ? t.dx : t.dy;
              if (s && i[wo]) {
                var h = n[wo] / i[wo];
                e ? n.translate(-h * s, 0) : n[Aa](0, -h * s), KB.stopEvent(t)
              }
            }
          },
          enddrag: function (t, i) {
            var n = r[X_]._lZ;
            if (n && n[QA]) {
              var e = i.isH,
                s = e ? t.vx : t.vy;
              .1 < Math.abs(s) && (s *= n.scale / i.scale, e ? n[pA](-s, 0) : n._o8O(0, -s))
            }
          }
        };
      this[UA] = new kB(e, h), this._horizontalDragSupport = new kB(s, h)
    },
    _3J: function () {
      var t = this[X_]._lZ;
      t && t.callLater(this._kS[ns](this))
    },
    _kS: function () {
      var t = this[X_]._lZ;
      if (t) {
        var i = t.bounds;
        if (i[Tt]()) return this._4E(!1), void this._4F(!1);
        var n = t.viewportBounds,
          e = t.width,
          s = t[Xt],
          h = 1 / t[wo],
          r = n.x > i.x + h || n[$t] < i.right - h,
          a = n.y > i.y + h || n[Ft] < i[Ft] - h,
          o = r && a;
        o ? (_N(this[ZA], VA), _N(this._8U, VA)) : (lN(this[ZA], VA), lN(this._8U, VA)), this._4E(r, n, i, o ? e - 10 : e), this._4F(a, n, i, o ? s - 10 : s)
      }
    },
    _4E: function (t, i, n, e, s) {
      if (!t) return this._8U[Yn][U_] = Qh, void(this._8U[wo] = 0);
      var h = Math.min(i.x, n.x),
        r = Math.max(i[$t], n[$t]),
        a = e / (r - h);
      this._8U[wo] = a, this._8U.style[Jt] = parseInt((i.x - h) * a) + Wr, this._8U[Yn][$t] = parseInt((r - i[$t]) * a) + Wr, this._8U[Yn][U_] = ""
    },
    _4F: function (t, i, n, e) {
      if (!t) return this._oAJ[Yn][U_] = Qh, void(this._oAJ[wo] = 0);
      var s = Math.min(i.y, n.y),
        h = Math.max(i.bottom, n[Ft]),
        r = e / (h - s);
      this._oAJ[wo] = r, this[ZA].style.top = parseInt((i.y - s) * r) + Wr, this._oAJ[Yn][Ft] = parseInt((h - i[Ft]) * r) + Wr, this[ZA][Yn][U_] = ""
    }
  }, jH[_] = {
    shape: null,
    initialize: function () {
      XC(this, jH, vw), this._oAH(), bH[Qp](this)
    },
    _oAH: function () {
      this[Io] = new pH(this[Eu][ab]), this[jp](this[Io], 0), this[no] = this.image
    },
    invalidateShape: function () {
      this[Io][Qd](), this[Wd]()
    },
    _$w: function (t, i, n) {
      var e = this[Up][Yp](this, t, i, n);
      return e = fH[Yp](this, t, i, n) || e, bH[Yp](this, t, i, n) || e
    },
    doValidate: function () {
      this[no] && (this[Io].data = this[bn][ab], this.body.$layoutByAnchorPoint = null != this._2N, this[no].anchorPosition = this._2N);
      var t = this[Eu][Jv],
        i = 0,
        n = 0;
      t && (i = t.x, n = t.y);
      var e = this.$x != i || this.$y != n;
      return e && (this[cM] = !0), this.$x = i, this.$y = n, gH.prototype[My][m](this) || e
    },
    getLinkablePorts: function () {
      return this[bn][KA]
    },
    getLinkableBounds: function () {
      return this[nT]
    },
    getDefaultPortPoint: function (t) {
      return zN(YN[_i], t || this[pw]())
    },
    getPortPoint: function (t, i) {
      return t ? ((i = i || this.getLinkableBounds())[eT] ? (n = zN(t, i[eT]), i[It] && (n = qB(n.x, n.y, i.rotate, i.rotateX || 0, i[hT] || 0)), n.x += i.tx || 0, n.y += i.ty || 0) : n = zN(t, i), n.port = t, n) : this[aT](i);
      var n
    },
    getPortPoints: function () {
      var t = this[oT]();
      if (t && Array.isArray(t)) {
        var i = [],
          n = this.getLinkableBounds();
        return t[At](function (t) {
          i.push(this.getPortPoint(t, n))
        } [ns](this)), i
      }
    }
  }, GC(jH, gH), TN(jH.prototype, {
    path: {
      get: function () {
        return this[bn][ab]
      }
    },
    length: {
      get: function () {
        return this[bn][N]
      }
    }
  }), jH.prototype[pr] = function (t, i, n) {
    var e = this._jB(t, i),
      s = this.data,
      h = c$(this.path, e.x, e.y, this[bn][Jw], n);
    if (!h) return !1;
    s.pathSegments = h.segments
  }, ZH.prototype = {
    _mY: function () {
      this._k9.style.visibility = Wl
    },
    _kU: function () {
      this._k9[Yn][to] = io
    },
    clear: function () {
      this._9X.clear(), this._d0()
    },
    contains: function (t) {
      return t instanceof Object && t.id && (t = t.id), this._9X[mt](t)
    },
    _5Z: function (t) {
      SG[$l](this._k9, Gl, t ? Hl + t[Q_](Z) + ")" : "")
    },
    addDrawable: function (t, i) {
      if (i) {
        var n = {
          id: ++QC,
          drawable: t,
          scope: i
        };
        return this._9X.add(n), n
      }
      return t.id || (t.id = ++QC), this._9X.add(t), t
    },
    removeDrawable: function (t) {
      if (!t.id) return this._9X.removeById(t);
      this._9X.remove(t)
    },
    _9X: null,
    invalidate: function () {
      this._d0()
    },
    _d0: function () {
      this._oAaseCanvas._6W || this._kR()
    },
    _jD: function (t, i) {
      this._k9[zr](t, i)
    },
    _kR: function () {
      var t = this[X_][ke],
        i = this.g;
      i._mC(), i.save(), this[X_][Xl](i);
      for (var n = this._9X._kH, e = 0, s = n.length; e < s; e++) i[Ta](), i.beginPath(), this._h3(i, n[e], t), i[Ba]();
      i.restore()
    },
    _h3: function (t, i, n) {
      i instanceof Function ? i(t, n) : i.drawable instanceof Function && i[Ui] && i.drawable[m](i[Ui], t, n)
    }
  }, IN[eO] = !0;
  var QH = function (t) {
    this._lZ = t
  };

  function VH(t) {
    this[Wp] = t, this[zA] = t[zA]
  }
  IN[JA] = 600, IN[qA] = jB.easeOut, QH[_] = {
    _lZ: null,
    _fN: null,
    _i7: function (t, i, n) {
      this._n3();
      var e = Math.abs(t / 2),
        s = Math.abs(i / 2),
        h = Math.min(IN[JA], .6 * Math.max(e, s) * 1e3);
      if (h < 10) return !1;
      var r = t * h / 3,
        a = i * h / 3;
      this._mI(this._lZ.tx + r, this._lZ.ty + a, 0, {
        duration: h,
        animationType: function (t) {
          return -(2 * Math.pow(t, 1.5) - 3 * t)
        }
      }, n)
    },
    _88: function (t, i, n, e, s) {
      this._fN && this._fN._n3(), s && (this[tS] = !0, this._lZ[zO](!0)), this._58(), this._fN = new ZB(t, this, i, n), this._fN._7J = this._7J[ns](this), this._fN._m3(e)
    },
    _58: function () {
      this._lZ[iS]()
    },
    _7J: function () {
      this[tS] && (this._lZ.pauseRendering(!1), delete this.__delayRender), this._lZ[nS]()
    },
    _f0: function () {
      return this._fN && this._fN._f0()
    },
    _n3: function () {
      this._fN && this._fN._n3()
    },
    _jY: function (t, i, n, e) {
      var s = this._fromTX + (this[eS] - this[sS]) * t,
        h = this._fromTY + (this[hS] - this._fromTY) * t,
        r = this[rS] + (this._toScale - this._fromScale) * t;
      this._lZ[Cd](s, h, r, this[aS])
    },
    _mI: function (t, i, n, e, s) {
      this._n3();
      var h = this._lZ,
        r = h[wo];
      if (n <= 0 && (n = r), t != h.tx || i != h.ty || n != r) {
        var a, o, f;
        e instanceof Object && (a = e[oS], o = e[fS], f = e.animationType);
        var c = h.tx,
          u = h.ty;
        if (!a)
          if (n != r) {
            var _ = r < n ? n / r : r / n;
            a = 60 * (_ = Math.log(_) / Math.log(1.3))
          } else a = RN(t, i, c, u) / 2;
        o = o || IN[JA], f = f || IN[qA], a = Math.min(o, a), this[sS] = c, this[cS] = u, this._fromScale = r, this._toTX = t, this[hS] = i, this[uS] = n, this._88(this._jY, a, f, s, n != r)
      }
    }
  }, IN[_S] = 8, IN[lS] = 4, IN.INTERACTION_ROTATE_HANDLER_SIZE_TOUCH = 30, IN[dS] = 20;
  var KH = Math.PI;

  function zH(t, i) {
    this[vS] = t, this[XO] = i || bS
  }

  function JH(t) {
    HC(this, JH, arguments)
  }

  function qH(t) {
    HC(this, qH, arguments)
  }

  function tX(t) {
    this[zh] = t[Ro](), this[ps] = t[yS](), this.defaultPoint = t.getDefaultPortPoint()
  }

  function iX(t) {
    HC(this, iX, arguments)
  }

  function nX(t) {
    HC(this, nX, arguments)
  }

  function eX(t) {
    HC(this, eX, arguments)
  }

  function sX(t, i, n) {
    var e = t[gS],
      s = t[ES];
    t.style[Jt] = i - e / 2 + Wr, t[Yn].top = n - s / 2 + Wr
  }

  function hX() {}

  function rX(t) {
    this[Wp] = t
  }

  function aX(t) {
    this[Wp] = t
  }

  function oX(t) {
    this[Wp] = t
  }

  function fX(t) {
    this[Wp] = t
  }

  function cX(t) {
    this.graph = t
  }

  function uX(t) {
    HC(this, uX, arguments), this[UD] = fN ? 8 : 5
  }

  function _X(t) {
    return t[Mi] == e$ || t.type == s$
  }

  function lX(t) {
    this[Wp] = t, this[zA] = t[zA]
  }
  VH.prototype = {
    element: null,
    _$m: !1,
    setCurrentElement: function (t, i) {
      this.element = t, i && this.addDataPropertyChangeListener()
    },
    onDataPropertyChange: function (t) {},
    addDataPropertyChangeListener: function () {
      this._$m || (this._$m = !0, this[Wp].dataPropertyChangeDispatcher.addListener(this._1M, this))
    },
    removeDataPropertyChangeListener: function () {
      this._$m && (this._$m = !1, this[Wp][xS].removeListener(this._1M, this))
    },
    _1M: function (t) {
      this[mS] && t[pi] == this[mS] && this.onDataPropertyChange(t)
    },
    onElementRemoved: function (t, i) {
      var n, e;
      this[mS] && (t == this[mS] || bN(t) && (n = this[mS], e = !1, PC(t, function (t) {
        if (n == t) return !(e = !0)
      }), e)) && this[ms](i)
    },
    onClear: function (t) {
      this.element && this[ms](t)
    },
    destroy: function (t) {
      delete this[mS], this.removeDataPropertyChangeListener(), this.removeDrawable(), this[pS] = null
    },
    invalidate: function () {
      this[zA][ll]()
    },
    removeDrawable: function () {
      this[MS] && (this[zA][wS](this[MS]), delete this[MS], this[ll]())
    },
    drawableList: null,
    addDrawable: function () {
      this[MS] || (this._n5ableId = this[zA][TS](this[Wa], this).id, this[ll]())
    },
    isShowing: function () {
      return this._n5ableId
    },
    draw: function (i, n) {
      this.drawableList && this.drawableList[At](function (t) {
        t[Wa](i, n)
      }), this.doDraw(i, n)
    },
    doDraw: function (t, i) {},
    escapable: !0,
    onkeydown: function (t, i) {
      this[OS] && 27 == t[m_] && (EN(t), this.destroy(i))
    }
  }, KB.DrawableInteraction = VH, zH[_] = {
    defaultCursor: bS,
    getInteractionInstances: function (t) {
      if (!this.interactions) return null;
      for (var i = [], n = 0, e = this[vS][N]; n < e; n++) {
        var s = this[vS][n];
        s instanceof Function && (s = new s(t)), s.install instanceof Function && s.install(t), i[D](s)
      }
      return i
    }
  }, JH[_] = {
    _eR: null,
    _kW: null,
    destroy: function (t) {
      XC(this, JH, ms, arguments), delete this._kW, delete this[Le], delete this._eR
    },
    doDraw: function (i, t) {
      var n = this[ps];
      n && (i[Ca](), n[At](function (t) {
        this[AS](i, t)
      }, this), this.isClosePath && i.closePath(), this[SS](i))
    },
    styleDraw: function (t) {
      var i = function (t, i) {
        if (!t) return i;
        var n = {};
        for (var e in t) n[e] = t[e];
        for (var e in i) n[e] === I && (n[e] = i[e]);
        return n
      }(this.graph[RO], this[DS](this.graph));
      i[ma] && (t.lineWidth = i[ma], i[pf] && (t[pf] = i.lineCap), i.lineJoin && (t[Mf] = i.lineJoin), i.lineDash && (t[If] = i[If], t[kf] = i.lineDashOffset || 0), t[pa] = i.strokeStyle, t[ka]()), i.fillStyle && (t[Da] = i.fillStyle, t[La]())
    },
    drawPoint: function (t, i, n) {
      if (n) t[Ra](i.x, i.y);
      else if (KB.isArray(i)) {
        var e = i[0],
          s = i[1];
        t[la](e.x, e.y, s.x, s.y)
      } else t.lineTo(i.x, i.y)
    },
    setCurrentPoint: function (t) {
      this[IS] = t
    },
    addPoint: function (t) {
      this._kW || (this._kW = [], this[TS]()), this._kW.push(t), this[ll]()
    }
  }, GC(JH, VH), TN(JH[_], {
    currentPoint: {
      get: function () {
        return this[Le]
      },
      set: function (t) {
        this[Le] = t, this[ll]()
      }
    },
    prevPoint: {
      get: function () {
        return this._kW && this._kW[N] ? this._kW[this._kW[N] - 1] : null
      }
    },
    points: {
      get: function () {
        if (this._o81 && this._kW && this._kW[N]) return this._kW[B](this[Le])
      }
    }
  }), KB[LS] = JH, qH.prototype = {
    _jF: function (t, i) {
      return this[RS] && t != this[RS] ? this._eT(t, i) : this[PS](t, i)
    },
    _oAL: function (t, i) {
      return t instanceof UG && i.canLinkFrom(t)
    },
    _eT: function (t, i) {
      return t instanceof UG && i[kS](t, this[RS])
    },
    _9Y: function (t, i, n, e) {
      if (this._oBurrentPort) return this[CS][NS](n, e);
      var s = i[bs](t);
      return s && s[nT] ? s[nT].center : t.location
    },
    _d2: function (t, i) {
      this._lX && (clearTimeout(this._lX), delete this._lX), this._lX = setTimeout(function (t) {
        if (delete this._lX, this[RS] && this[IS]) {
          var i = t.x - this.currentPoint.x,
            n = t.y - this.currentPoint.y;
          Math[Lt](i * i + n * n) * this[Wp][wo] <= 2 && this[pr](this.currentPoint)
        }
      } [ns](this, this[BS](t)), IN[FS])
    },
    destroy: function (t) {
      XC(this, qH, ms, arguments), this.start = null, this.startPort = null, this._lX && (clearTimeout(this._lX), delete this._lX), this._oAN = null, this._oBurrentPort = null
    },
    ondblclick: function (t, i) {
      this.destroy(i)
    },
    finish: function (t, i, n, e) {
      var s;
      this._kW && 2 <= this._kW[N] && (this._kW.shift(), s = new LN, PC(this._kW, function (t) {
        if (KB[$](t)) {
          var i = t[0],
            n = t[1];
          s.add(new a$(zB[nf], [i.x, i.y, n.x, n.y]))
        } else s.add(new a$(zB[tf], [t.x, t.y]))
      }, this)), i[$S](this[RS], n, t, s, this.startPort, e), this[ms](i)
    },
    onstart: function (t, i) {
      if (this[RS]) {
        var n = t[ds](),
          e = i.toLogical(t);
        this._eT(n, i) ? this[GS](t, i, n, new tX(i[bs](n)).nearestPoint(e.x, e.y).port) : this.addPoint(e)
      }
    },
    startdrag: function (t, i) {
      if (!this[RS] && !t[HS]) {
        var n = t[ds]();
        if (n && this[PS](n, i)) {
          t[HS] = !0, this.start = n;
          var e = i[nd](t),
            s = this._9Y(n, i, e.x, e.y);
          this.startPort = s[rT], this[pr](s)
        }
      }
    },
    ondrag: function (t, i) {
      this.onmousemove(t, i)
    },
    enddrag: function (t, i) {
      if (this[RS]) {
        var n = this._oAN || t[ds]();
        if (this._eT(n, i)) {
          var e = i[nd](t);
          this[GS](t, i, n, new tX(i.getUI(n))[NS](e.x, e.y)[rT])
        }
      }
    },
    onrelease: function (t, i) {
      SB(t) && this.destroy(i)
    },
    _oAN: null,
    onmousemove: function (t, i) {
      var n, e, s, h, r, a, o = i[nd](t),
        f = (n = i, e = o.x, s = o.y, h = function (t) {
          return this._jF(t, i)
        } [ns](this), n.forEachReverseVisibleUI(function (t) {
          var i = t[bn];
          if (i instanceof KB[OT] && (!h || !1 !== h(i)) && t.uiBounds[Vt](e - t.x, s - t.y) && t.hitTest(e, s, IN[ed] / n[wo])) return r = i, !1
        }), r);
      f != this[XS] && (this[XS] = f, this[CS] = f ? new tX(i[bs](f)) : null, f ? (this[TS](), this[pS] = [this[CS]]) : this.drawableList = null, this.invalidate()), this[CS] && (a = this[CS].nearestPoint(o.x, o.y), this[ll]()), this[RS] && (this[IS] = a || o, SB(t) && this._d2(t, i))
    },
    toLogicalPoint: function (t) {
      return this.graph[nd](t)
    },
    getDefaultDrawStyles: function (t) {
      return {
        lineWidth: this[Wp].getDefaultStyle(oH.EDGE_WIDTH),
        strokeStyle: this[Wp][WS](oH.EDGE_COLOR),
        lineDash: this[Wp].getDefaultStyle(oH[HE]),
        lineDashOffset: this[Wp][WS](oH[US]),
        lineCap: this[Wp].getDefaultStyle(oH[tp]),
        lineJoin: this.graph[WS](oH[Cm])
      }
    }
  }, GC(qH, JH), KB[YS] = qH, tX[_][jS] = function (t, i, n) {
    t[Ca](), t.rect(n.x - 0, n.y - 0, n[Ht] + 0, n.height + 0), t.lineWidth = 2 / i, t[pa] = bT, t[ka]()
  }, tX[_].drawPoint = function (t, i, n) {
    t.beginPath();
    var e = 4 / i;
    t.moveTo(n.x + e, n.y), t.arc(n.x, n.y, e, 0, 2 * Math.PI, !1), t.lineWidth = 1 / i, n.marked ? (t[pa] = ZS, t[Da] = QS) : (t[pa] = bT, t[Da] = "rgba(255, 255, 255, 0.8)"), t[La](), t[ka]()
  }, tX[_][Wa] = function (i, n) {
    var t = this[zh];
    this[jS](i, n, t), this.points && this[ps].forEach(function (t) {
      this[AS](i, n, t)
    } [ns](this))
  }, tX[_].nearestPoint = function (s, h, r) {
    if (this[ps]) {
      r = r || 20;
      var a, o = r *= r;
      return this[ps].forEach(function (t) {
        t[VS] && (t[VS] = !1);
        var i = t.x - s,
          n = t.y - h,
          e = i * i + n * n;
        e < r && e < o && (o = e, a = t)
      }), a && (a[VS] = !0), a || this[KS]
    }
    return this.defaultPoint
  }, iX[_] = {
    getDefaultDrawStyles: function (t) {
      return {
        lineWidth: this[Wp].getDefaultStyle(oH[Cp]),
        strokeStyle: this[Wp][WS](oH[zS]),
        fillStyle: this[Wp].getDefaultStyle(oH[Am])
      }
    },
    finish: function (t, i) {
      if (this._kW && this._kW[N]) {
        var n = this._kW,
          s = 0,
          h = 0,
          e = 0;
        n[At](function (i) {
          KB.isArray(i) ? i[At](function (t) {
            s += i.x, h += i.y, e++
          }) : (s += i.x, h += i.y, e++)
        }), s /= e, h /= e;
        var r = [];
        n[At](function (t, i) {
          if (0 != i)
            if (KB[$](t)) {
              var n = t[0],
                e = t[1];
              r[D](new a$(zB[nf], [n.x - s, n.y - h, e.x - s, e.y - h]))
            } else r.push(new a$(zB.SEGMENT_LINE_TO, [t.x - s, t.y - h]));
          else r[D](new a$(zB[JS], [t.x - s, t.y - h]))
        }), this[Bn](t, r, s, h), this[ms](i)
      }
    },
    startdrag: function (t, i) {
      t.responded = !0
    },
    createElement: function (t, i, n, e) {
      return this[Wp][qS](t, i, n, e)
    },
    onstart: function (t, i) {
      var n = i[nd](t);
      this._eR = n, this[pr](n)
    },
    onmousemove: function (t, i) {
      this._eR && (this[IS] = i[nd](t))
    },
    ondblclick: function (t, i) {
      if (this._eR) {
        if (this._kW[N] < 3) return void this.destroy(i);
        delete this._kW[this._kW[N] - 1], this[GS](t, i)
      }
    },
    isClosePath: !0
  }, GC(iX, JH), KB.CreateShapeInteraction = iX, nX[_] = {
    isClosePath: !1,
    createElement: function (t, i, n, e) {
      return this.graph[tD](t, i, n, e)
    },
    getDefaultDrawStyles: function () {
      return {
        lineWidth: TH[oH[Cp]],
        strokeStyle: TH[oH.SHAPE_STROKE_STYLE],
        lineDash: this[Wp].getDefaultStyle(oH[Pm]),
        lineDashOffset: this[Wp].getDefaultStyle(oH[km]),
        lineCap: this[Wp].getDefaultStyle(oH[tp]),
        lineJoin: this[Wp].getDefaultStyle(oH[Cm])
      }
    }
  }, GC(nX, iX), KB[iD] = nX, eX[_] = {
    destroy: function (t) {
      XC(this, eX, ms, arguments), t[nD] = "", this[RS] = null
    },
    doDraw: function (t, i) {
      if (this[RS] && this[IS]) {
        var n, e;
        this[Wp][RO] && (n = this.graph.interactionProperties.uiClass, e = this.graph[RO][Fv]), n = n || this[Wp][LO] || KB[eD], e = e || this[Wp][Fv];
        var s = n[sD] || KB[eD][sD],
          h = this.graph[bs](this[RS]);
        h && h.bodyBounds && (h = h.bodyBounds[IM], t[Ca](), s(t, h, this[IS], e), this[SS](t))
      }
    },
    canLinkFrom: function (t, i) {
      return t instanceof UG && i[$T](t)
    },
    canLinkTo: function (t, i) {
      return t instanceof UG && i[kS](t, this.start)
    },
    startdrag: function (t, i) {
      var n = t.getData();
      this[$T](n, i) && (t[HS] = !0, this.start = n, i[nD] = Cs, this.addDrawable())
    },
    ondrag: function (t, i) {
      this.start && (KB[mT](t), this[IS] = i.toLogical(t), this[ll]())
    },
    enddrag: function (t, i) {
      if (this[RS]) {
        this.invalidate();
        var n = t[ds]();
        this.canLinkTo(n, i) && i.createEdgeByInteraction(this[RS], n, t), this[ms](i)
      }
    },
    getDefaultDrawStyles: function () {
      return {
        lineWidth: this.graph.getDefaultStyle(oH[PE]),
        strokeStyle: this[Wp].getDefaultStyle(oH[CE]),
        lineDash: this[Wp][WS](oH.EDGE_LINE_DASH),
        lineDashOffset: this[Wp][WS](oH.EDGE_LINE_DASH_OFFSET),
        lineCap: this[Wp][WS](oH[tp]),
        lineJoin: this[Wp].getDefaultStyle(oH[Cm])
      }
    }
  }, GC(eX, JH), KB[hD] = eX, IN[rD] = !1, hX[_] = {
    html: null,
    createHTML: function () {
      var i = x.createElement(aD);
      i[jl] = oD, i[Yn][Yo] = sl, i.style[LM] = IM, i[Yn].border = fD, i[Yn].padding = cD, i[Yn][uD] = "0px 0px 10px rgba(40, 85, 184, 0.75)", i[Yn][U_] = Qh, i[Yn].overflow = io;
      var n = this;
      return i[_D] = function (t) {
        n[lD](t)
      }, i[dD] = function (t) {
        27 != t[m_] || n[vD]()
      }, i[bD] = function (t) {
        if (13 == t.keyCode || 10 == t[m_]) {
          if (t[le](), t[x_] || t.ctrlKey || t[E_]) return function (t, i) {
            if (F == typeof t.selectionStart && F == typeof t[yD]) {
              var n = t.value,
                e = t[gD];
              t[O] = n[L](0, e) + i + n[L](t.selectionEnd), t[yD] = t[gD] = e + i[N]
            } else if (void 0 !== x.selection) {
              var s = x.selection[ED]();
              s.text = i, s[xD](!1), s[uO]()
            }
          }(i, w_), void n[lD](t);
          n[mD]()
        }
      }, x.body[eo](i), i
    },
    setText: function (t, i) {
      this[mO][O] = t || "", i && (this[mO][Yn][Jx] = i),
        function (t) {
          if (zC) {
            var i = u[rO] || u.pageXOffset,
              n = u.scrollY || u.pageYOffset;
            return t[uO](), u[oO](i, n)
          }
          t.select()
        }(this[mO]), this.onSizeChange(this.html)
    },
    onSizeChange: function (t) {
      t[gS], t[ES];
      var i = function (t) {
        var n = x.createElement(Ur)[Ql](Yr),
          i = getComputedStyle(t, null),
          e = i[wM];
        e = e || i[am] + C + i.fontSize + C + i[rm], n.font = e;
        var s = t[O].split(w_),
          h = parseInt(i[Jx]),
          r = 0,
          a = 0;
        return KB[At](s, function (t) {
          var i = n.measureText(t)[Ht];
          r < i && (r = i), a += 1.2 * h
        }), {
          width: r,
          height: a
        }
      }(t);
      return t[Yn][Ht] = i.width + 30 + Wr, t[Yn][Xt] = i[Xt] + 10 + Wr, i
    },
    onValueChange: function (t) {
      var i = t[J_];
      this[pD](i), i[Yn][Jt] = i.x - i[gS] / 2 + Wr
    },
    onClickOnWindow: function (t) {
      t[J_] != this[mO] && (IN[rD] ? this[mD]() : this.cancelEdit())
    },
    startEdit: function (t, i, n, e, s) {
      this[mO] || (this[mO] = this[MD]()), this.stopEditWhenClickOnWindow || (this.stopEditWhenClickOnWindow = function (t) {
        this[wD](t)
      }.bind(this)), u.addEventListener(Xe, this[TD], !0), this[OD] = s, this[mO].x = t, this.html.y = i, this[mO][Yn][U_] = fA, sX(this[mO], t, i), this[AD](n, e || 10), sX(this.html, t, i)
    },
    isEditing: function () {
      return Qh != this[mO].style[U_]
    },
    cancelEdit: function () {
      this[mD](!0)
    },
    stopEdit: function (t) {
      if (this[SD]()) {
        u[Me](Xe, this[TD]);
        var i = this.html.value;
        !t && this[OD] && this[OD](i), this[mO][Yn][U_] = Qh, this[mO][O] = null, this.callback = null
      }
    },
    destroy: function () {
      this[mO] && x[no][Va](this[mO])
    }
  }, KB[DD] = hX, rX.prototype = {
    destroy: function (t) {
      t[ID] && (t[ID].destroy(), delete t[ID])
    },
    ondblclick: function (t, i) {
      var n = t[ds]();
      if (n) {
        if (!1 !== n.dblclickable) {
          if (i[NT] && i[LD](n)) {
            var e = i[Do](t);
            if (e instanceof mH && !1 !== e.editable) {
              var s = i.labelEditor;
              s || (i[ID] = s = new hX);
              var h = e.getBounds();
              return h = function (t, i, n) {
                t += u.pageXOffset, i += u.pageYOffset;
                var e = n[td]();
                return {
                  x: t + e.left,
                  y: i + e.top
                }
              }((h = i.toCanvas(h.x + h[Ht] / 2, h.y + h.height / 2)).x, h.y, i.html), void i.startLabelEdit(n, e, s, h)
            }
          }
          var r = n instanceof tH,
            a = n instanceof GG && n.hasEdgeBundle();
          if (!n._49 || !$B(t) && (r || a)) return r ? (n[jd] = !n.expanded, void this[Wp][PT](new wX(this[Wp], wX[Xb], t, n))) : void(a && this[Wp].reverseExpanded(n) && this[Wp][PT](new wX(this[Wp], wX[RD], t, n)));
          i.currentSubNetwork = n
        }
      } else {
        if (i.currentSubNetwork) return void i[PD]();
        if (i.enableDoubleClickToOverview) {
          var o = i[kD] || 1;
          Math.abs(i[wo] - o) < 1e-4 ? i[tO]() : i[CD](o)
        }
      }
    }
  }, aX[_] = {
    onkeydown: function (t, i) {
      if (i[NT]) {
        var n = t[m_];
        if (8 == n || 46 == n || 127 == n) return i[ND](t), void yN(t);
        $B(t) && (67 != n && 86 != n && 90 != n && 89 != n || yN(t))
      }
    }
  }, KB[BD] = aX, oX.prototype = {
    onkeydown: function (t, i) {
      if (t[FD] && 83 == t[m_]) {
        var n = i[$D](i[wo], i[ov]),
          e = u[Us]()[GD];
        e[HD] = XD + n[Ht] + WD + n.height;
        var s = e[Bn](qa);
        s.src = n[bn], e[no][eo](s), yN(t)
      }
    }
  }, cX[_] = {
    onkeydown: function (t, i) {
      $B(t) || (37 == t.keyCode ? (this._6H(i, 1, 0), yN(t)) : 39 == t[m_] ? (this._6H(i, -1, 0), yN(t)) : 38 == t[m_] ? (this._6H(i, 0, 1), yN(t)) : 40 == t[m_] && (this._6H(i, 0, -1), yN(t)))
    },
    _6H: function (t, i, n) {
      t[pA](i, n)
    },
    onstart: function (t, i) {
      this._m3 && this[ms](i)
    },
    _m3: !(fX[_] = {
      destroy: function (t) {
        delete this[YD], delete this.currentDraggingElement
      },
      _2G: function (i) {
        var n = new LN;
        return i[tv][At](function (t) {
          i[gO](t) && i[dO](t) && n.add(t)
        }, this), n
      },
      onstart: function (t, i) {
        this[jD] && this[ms](i)
      },
      startdrag: function (t, i) {
        if (!(t.responded || t.touches && 1 != t[tt].length)) {
          var n = t[ds]();
          if (n && i.isSelected(n) && i.isMovable(n)) {
            t[HS] = !0, this[jD] = n, this[YD] = this._2G(i);
            var e = new wX(i, wX[ZD], t, this.currentDraggingElement, this.draggingElements[Rn]);
            !1 !== i[QD](e) ? i[PT](e) : this.destroy(i)
          } else this[ms](i)
        }
      },
      ondrag: function (t, i) {
        if (this.currentDraggingElement)
          if (t[tt] && 1 != t[tt][N]) this.enddrag(t, i);
          else {
            EN(t);
            var n = t.dx,
              e = t.dy,
              s = i.scale;
            n /= s, e /= s;
            var h = new wX(i, wX[VD], t, this[jD], this[YD].datas);
            i[KD](this[YD][Rn], n, e), i[PT](h)
          }
      },
      enddrag: function (t, i) {
        if (this.currentDraggingElement) {
          if (this.draggingElements && this[YD].length) {
            if (t[E_]) {
              var s, n = i[nd](t),
                h = n.x,
                r = n.y;
              i[zD](function (t) {
                var i = t[bn];
                if (!this[YD][jt](i) && t[Dd][Vt](h - t.x, r - t.y) && t[Do](h, r, 1)) {
                  if (i instanceof KB[IO]) {
                    if (!i[Yd]) return;
                    for (var n = this[YD][N]; 0 < n--;) {
                      var e = this.draggingElements.get(n);
                      if (e instanceof KB[OT] && e.linkedWith(i)) return
                    }
                    return s = i, !1
                  }
                  return (i[Yd] || i._j8() && i.expanded) && (s = i), !1
                }
              }, this), s && this[YD][At](function (t) {
                for (var i = t[Ci]; i;) {
                  if (this[YD].contains(i)) return;
                  i = i[Ci]
                }
                t[Ci] = s
              }, this)
            }
            var e = new wX(i, wX.ELEMENT_MOVE_END, t, this[jD], this[YD][Rn]);
            i[PT](e)
          }
          this[ms](i)
        }
      },
      onpinch: function (t, i) {
        this.currentDraggingElement && this[ls](t, i)
      },
      step: 1,
      onkeydown: function (t, i) {
        var n, e;
        if ($B(t) && (37 == t[m_] ? n = -1 : 39 == t[m_] ? n = 1 : 38 == t[m_] ? e = -1 : 40 == t[m_] && (e = 1), n || e)) {
          var s = this._2G(i)[Rn];
          if (0 != s.length) {
            yN(t), n = n || 0, e = e || 0;
            var h = this.step / i.scale,
              r = new wX(i, wX.ELEMENT_MOVE_END, t, null, s);
            i[KD](s, n * h, e * h), i[PT](r)
          }
        }
      }
    }),
    startdrag: function (t, i) {
      if (!t[HS]) {
        i[UT](), t.responded = !0, this._m3 = !0, i.cursor = BB;
        var n = new wX(i, wX.PAN_START, t);
        i[PT](n)
      }
    },
    ondrag: function (t, i) {
      this._m3 && i[Aa](t.dx || 0, t.dy || 0)
    },
    enddrag: function (t, i) {
      if (this._m3) {
        if (!1 !== i[QA]) {
          var n = t.vx,
            e = t.vy;
          (.1 < Math.abs(n) || .1 < Math.abs(e)) && i[pA](n, e)
        }
        this.destroy(i);
        var s = new wX(i, wX.PAN_END, t);
        i.onInteractionEvent(s)
      }
    },
    startpinch: function (t, i) {
      i[zO](!0)
    },
    onpinch: function (t, i) {
      this._m3 = !0;
      var n = t.dScale;
      if (n) {
        var e = i.globalToLocal(t[IM]);
        i.zoomAt(n, e.x, e.y, !1)
      }
    },
    endpinch: function (t, i) {
      i[zO](!1)
    },
    destroy: function (t) {
      this._m3 = !1, t[nD] = null
    }
  }, uX.prototype = {
    onDataPropertyChange: function (t) {
      this[Wp][jT](function () {
        this._kS()
      }, this)
    },
    destroy: function () {
      this[Wp].cursor = null, this[mS] && delete this[mS][JD], this[qD] = !1, delete this[Bv], delete this[Le], delete this[tI], XC(this, uX, ms, arguments)
    },
    _o80: null,
    _61: function (t) {
      this[Bv] = t, this.invalidate()
    },
    isEndPointEditable: function (t, i) {
      return this[Wp][iI](t, i)
    },
    drawPoint: function (t, i, n) {
      i.isEndPoint && !this.isEndPointEditable(this[mS], i[nI]) || (t[Ca](), i[eI] ? t[zh](i.x - this[UD] / n, i.y - this[UD] / n, this.handlerSize / n * 2, this[UD] / n * 2) : t.arc(i.x, i.y, this[UD] / n, 0, 2 * Math.PI, !1), t[ma] = 1 / n, t.lineDash = [], t[pa] = _A, t.fillStyle = "rgba(255, 255, 0, 0.8)", t.stroke(), t[La]())
    },
    _h5: function (t, i, n, e) {
      e ? t[Ra](i, n) : t[_a](i, n)
    },
    doDraw: function (t, i) {
      this.drawLine(t, i)
    },
    drawLine: function (r, n) {
      if (this[Bv] && this._o80[N]) {
        var t = this[Bv];
        r.save(), this[mS] instanceof jG && (r[Aa](this.element.x, this[mS].y), this[mS].rotate && r[It](this.element[It]));
        var a, o = [];
        r[Ca]();
        var f = t[N];
        t[At](function (t, i) {
          if (t.type != zB[sI])
            for (var n = !i || i == f - 1, e = 0, s = t[ps]; e + 1 < s.length;) {
              var h = {
                x: s[e],
                y: s[e + 1],
                isControlPoint: this._78(t, e)
              };
              n && (h[hI] = !0, h.isFrom = 0 == i), o[D](h), this._h5(r, h.x, h.y, null == a), a = h, e += 2
            }
        }, this), r.lineWidth = 1 / n, r[If] = [2 / n, 3 / n], r.strokeStyle = rI, r[ka](), o.forEach(function (t, i) {
          this[AS](r, t, n, i)
        }, this), r.restore()
      }
    },
    invalidate: function () {
      this[zA].invalidate()
    },
    _3K: function (t) {
      if (this.element != t && (this[mS] && this[ms](), t && this.isEditable(t))) {
        var i = this._63(t, this[Wp]);
        i && (this[aI](t, !0), t[JD] = !0, this[tI] = !0, this._61(i), this.addDrawable())
      }
    },
    _kS: function () {
      if (this[oI]() && this.element) {
        var t = this._63(this[mS], this.graph);
        t ? this._61(t) : this[ms](this[Wp])
      }
    },
    _63: function (t, i) {
      if (i[LD](t)) {
        var n = t.pathSegments || [];
        n instanceof LN && (n = n.toDatas());
        var e = i.getUI(t);
        if (e instanceof KB[eD]) {
          var s = e[bw](i[bs](t.fromAgent)),
            h = e.getEndPointBounds(i.getUI(t.toAgent)),
            r = s[IM],
            a = h[IM],
            o = e.getStyle(oH[WE]),
            f = e[Ny](oH[YE]);
          o && (r.x += o.x || 0, r.y += o.y || 0), f && (a.x += f.x || 0, a.y += f.y || 0), n[M](0, 0, new KB[rf](zB.SEGMENT_MOVE_TO, [r.x, r.y])), n.push(new KB.PathSegment(zB[JS], [a.x, a.y]))
        }
        return n
      }
    },
    _jB: function (t, i) {
      var n = {
        x: t -= this[mS].x,
        y: i -= this[mS].y
      };
      return this.element.rotate && IH(n, -this[mS][It]), n
    },
    isPointAddable: function (t, i) {
      return !0
    },
    isPointRemovable: function (t, i, n) {
      return !0
    },
    onclick: function (t, i) {
      if (i.editable && t[x_] && this.element) {
        var n = this._h7(t, i);
        if (n && n[eI] && !1 !== this[fI](this[mS], n, i)) 0 <= n[Ki] && (this[mS].removePathSegmentByIndex(n.index), (e = new wX(i, wX[cI], t, this[mS])).point = n, i[PT](e));
        else if (this[mS] == t.getData() && !1 !== this[uI](this.element, i)) {
          var e, s = i.toLogical(t);
          !1 !== i.getUI(this.element).addPoint(s.x, s.y, this.handlerSize || 2) && ((e = new wX(i, wX.POINT_ADD, t, this[mS]))[_I] = s, i[PT](e))
        }
      }
    },
    isEditable: function (t) {
      return this[Wp][LD](t) && (t instanceof jG || t instanceof GG && (!t.isLooped() || t.hasPathSegments()))
    },
    ondblclick: function (t, i) {
      if (i[NT]) {
        var n = t[ds]();
        n && n != this[mS] && !n[JD] ? this._3K(n) : this[ms](i)
      } else this[mS] && this.destroy(i)
    },
    onstart: function (t, i) {
      if (this[qD] = !0, i[NT]) {
        if (!t[HS])
          if (this[mS] && this._h7(t, i)) t[HS] = !0;
          else {
            var n = t.getData();
            n && i.isResizable(n) && n instanceof jG ? this[mS] && n != this.element && this[ms]() : this._3K(n)
          }
      } else this.element && this[ms](i)
    },
    onrelease: function (t, i) {
      this[qD] = !1, this[mS] && (this[tI] = !0)
    },
    _o81: null,
    _h7: function (t, f) {
      var c = f[nd](t);
      this[mS] instanceof jG && (c = this._jB(c.x, c.y));
      var u, i = f[wo],
        _ = this[UD] / i,
        l = this._o80,
        d = l.length,
        v = this[mS] instanceof KB[IO];
      if (l[At](function (t, i) {
          for (var n = 0, e = t[ps]; n + 1 < e[N];) {
            var s = e[n],
              h = e[n + 1];
            if (RN(c.x, c.y, s, h) < _) {
              if (u = {
                  oldPoints: e.slice(0),
                  segment: t,
                  index: i,
                  pointIndex: n
                }, v && --u[Ki], v && !_X(t) && (0 == i || i == l.length - 1)) {
                u[hI] = !0;
                var r = 0 == i,
                  a = (u[nI] = r) ? KB[SO][WE] : KB.Styles[YE],
                  o = f[Ny](this[mS], a) || {};
                u[lI] = [o.x || 0, o.y || 0]
              }
              return this._78(t, n) && (u.isControlPoint = !0, 0 < i && (u[dI] = l instanceof LN ? l.getByIndex(i - 1) : l[i - 1]), i + 1 < d && (u.nextSegment = l instanceof LN ? l[xt](i + 1) : l[i + 1], u[vI].points && (u[bI] = u.nextSegment[ps][L](0)))), !1
            }
            n += 2
          }
        }, this), !u || !u.isEndPoint || this[iI](this[mS], u[nI])) return u
    },
    _78: function (t, i) {
      return i == t[ps].length - 2
    },
    startdrag: function (t, i) {
      if (this[mS] && this._oBanEdit && (this[Le] = this._h7(t, i), this._o81)) {
        this[wS](), t[HS] = !0;
        var n = new wX(i, wX[yI], t, this[mS]);
        n[_I] = this._o81, i[PT](n)
      }
    },
    onkeyup: function (t, i) {
      this[qD] && 16 != !t[m_] && this.element && this._o81 && this._o81.delta && this._d4(this._o81[gI].x, this[Le][gI].y, i, t, !1)
    },
    onkeydown: function (t, i) {
      XC(this, uX, dD, arguments), this[qD] && this[mS] && this[Le] && t[E_] && this[Le][gI] && this._d4(this[Le][gI].x, this[Le][gI].y, i, t, !0)
    },
    _d4: function (t, i, n, e, s) {
      var h = this[Le],
        r = this[mS],
        a = h[lI],
        o = h[EI];
      if (h[hI]) {
        var f, c = h[nI] ? KB[SO].EDGE_FROM_OFFSET : KB.Styles[YE],
          u = {
            x: a[0] + t,
            y: a[1] + i
          };
        return r.setStyle(c, u), (f = new wX(n, wX[xI], e, r)).point = h, void n[PT](f)
      }
      if (s && h[eI]) {
        var _ = a[a[N] - 2] + t,
          l = a[a[N] - 1] + i,
          d = h.prevSegment,
          v = h[vI],
          b = 20 / n[wo],
          y = Number.MAX_VALUE,
          g = y,
          E = y,
          x = y;
        d && (d = d[ha], y = Math.abs(_ - d.x), E = Math.abs(l - d.y)), v && (v = v.lastPoint, g = Math.abs(_ - v.x), x = Math.abs(l - v.y)), y < b && y < g ? t += d.x - _ : g < b && g < y && (t += v.x - _), E < b && E < x ? i += d.y - l : x < b && x < E && (i += v.y - l)
      }
      if (h.isControlPoint && _X(o)) {
        for (var m = o.points[N] - 4; m < o.points[N];) {
          var p = a[m] + t,
            M = a[m + 1] + i;
          o[ps][m] = p, o[ps][m + 1] = M, m += 2
        }
        if (h[vI] && _X(h[vI])) {
          var w = h[bI];
          p = w[0] + t, M = w[1] + i, h[vI][ps][0] = p, h[vI].points[1] = M
        }
      } else p = a[m = h.pointIndex] + t, M = a[m + 1] + i, o[ps][m] = p, o[ps][m + 1] = M;
      r[Gv](), (f = new wX(n, wX[xI], e, r))[_I] = h, n.onInteractionEvent(f)
    },
    ondrag: function (t, i) {
      if (this[mS] && this[Le]) {
        var n = this[Le],
          e = this[mS],
          s = t[As],
          h = t.totalDeltaY,
          r = i[wo];
        if (s /= r, h /= r, e[It]) {
          var a = {
            x: s,
            y: h
          };
          IH(a, -e[It]), s = a.x, h = a.y
        }
        n[gI] = {
          x: s,
          y: h
        }, this._d4(s, h, i, t, t[E_])
      }
    },
    enddrag: function (t, i) {
      if (this[mS] && this._o81) {
        this[TS](), this._kS();
        var n = new wX(i, wX[mI], t, this[mS]);
        n.point = this[Le], i.onInteractionEvent(n)
      }
    },
    onmousemove: function (t, i) {
      this.element && (i[nD] = t.altKey && (this._h7(t, i) || this.element == t[ds]()) ? "crosshair" : null)
    }
  }, GC(uX, VH), IN.SELECTION_RECTANGLE_STROKE = 1, IN[pI] = MN(3724541951), IN[MI] = MN(1430753245), zB.RECTANGLE_SELECTION_MODE_INTERSECT = wI, zB[TI] = OI, IN[AI] = zB[SI], lX[_] = {
    onstart: function (t, i) {
      this._m3 && this[ms](i)
    },
    startdrag: function (t, i) {
      t[HS] || (t[HS] = !0, this._m3 = i[nd](t), i[nD] = Cs, this[DI] = this[zA][TS](this._14, this).id)
    },
    ondrag: function (t, i) {
      if (this._m3) {
        EN(t), this._end = i[nd](t), this.invalidate();
        var n = new wX(i, wX[II], t, i[tv]);
        i[PT](n)
      }
    },
    enddrag: function (t, i) {
      if (this._m3) {
        this[LI] && (clearTimeout(this[LI]), this[LI] = null), this._gF(!0), this[ms](i);
        var n = new wX(i, wX.SELECT_END, t, i[tv]);
        i[PT](n)
      }
    },
    onpinch: function (t, i) {
      this._m3 && this[ls](t, i)
    },
    _14: function (t, i) {
      t[pa] = IN[pI], t.fillStyle = IN[MI], t[ma] = IN[RI] / i;
      var n = this._m3.x,
        e = this._m3.y;
      t.rect(n, e, this[PI].x - n, this[PI].y - e), t[La](), t[ka]()
    },
    invalidate: function () {
      this.invalidateFlag ? this.topCanvas[ll]() : (this.invalidateFlag = !0, this[LI] = setTimeout(this._gF.bind(this), 100))
    },
    _gF: function (t) {
      if (this[eA] = !1, this[LI] = null, !this._m3 || qC && !t) this[zA].invalidate();
      else {
        var i = Math.min(this._m3.x, this._end.x),
          n = Math.min(this._m3.y, this[PI].y),
          e = Math.abs(this._m3.x - this[PI].x),
          s = Math.abs(this._m3.y - this[PI].y);
        if (e && s) {
          var h = [],
            r = this[Wp][wo],
            a = this.graph[kI];
          if (this.graph[CI](function (t) {
              t._j9 && this[Wp][vO](t.$data) && this[NI](i, n, e, s, t, r, a) && h[D](t[bn])
            }.bind(this)), this[Wp].selectionModel.set(h), this[zA][ll](), !t) {
            var o = new wX(this[Wp], wX[BI], null, this[Wp][tv]);
            this.graph.onInteractionEvent(o)
          }
        } else this[Wp][tv].clear()
      }
    },
    inRectangle: function (t, i, n, e, s, h, r) {
      var a = s[Ro]();
      return !!XN(t, i, n, e, a.x, a.y, a.width, a[Xt]) || (r = r || IN.RECTANGLE_SELECTION_MODE) != zB.RECTANGLE_SELECTION_MODE_CONTAIN && function (t, i, n, e, s, h) {
        t -= s.$x, i -= s.$y;
        var r = s._h1.intersection(t, i, n, e);
        if (!r) return !1;
        t = r.x * h, i = r.y * h, n = r[Ht] * h, e = r.height * h, n = Math.round(n) || 1, e = Math.round(e) || 1;
        var a = aF(),
          o = a.canvas;
        o[Ht] < n || o.height < e ? (o[Ht] = n, o[Xt] = e) : (a[Qf](1, 0, 0, 1, 0, 0), a[FI](0, 0, n, e)), a[Qf](1, 0, 0, 1, -t - s.$x * h, -i - s.$y * h), a[wo](h, h), s._kR(a, 1);
        var f = cF(a, 0, 0, n, e);
        if (!f) return !1;
        for (var c = (f = f[bn])[N] / 4; 0 < c--;)
          if (0 < f[4 * c - 1]) return !0;
        return !1
      }(t, i, n, e, s, h)
    },
    destroy: function (t) {
      this._m3 = null, t[nD] = null, this._14Id && (this.topCanvas.removeDrawable(this[DI]), delete this[DI], this[zA].invalidate())
    }
  };
  var dX = YC({
    super: lX,
    onstart: null,
    startdrag: null,
    ondrag: null,
    enddrag: null,
    accept: function (t, i, n) {
      return !1 !== n.enableRectangleSelectionByRightButton
    },
    oncontextmenu: function (t, i) {
      i[$I] || EN(t)
    },
    onstart2: function (t, i) {
      lX[_][ss][d](this, arguments)
    },
    startdrag2: function (t, i) {
      t[HS] || (i[$I] && i[$I].hide instanceof Function && i[$I].hide(), lX[_][os][d](this, arguments))
    },
    ondrag2: function (t, i) {
      lX.prototype.ondrag[d](this, arguments)
    },
    enddrag2: function (t, i) {
      lX[_].enddrag[d](this, arguments)
    }
  });

  function vX(t) {
    HC(this, vX, arguments), this.handlerSize = fN ? 8 : 4, this[GI] = fN ? 30 : 20
  }

  function bX(t, i) {
    var n = new WN;
    return n.addPoint(x$[m](t, {
      x: i.x,
      y: i.y
    })), n.addPoint(x$[m](t, {
      x: i.x + i[Ht],
      y: i.y
    })), n.addPoint(x$.call(t, {
      x: i.x + i.width,
      y: i.y + i[Xt]
    })), n[pr](x$[m](t, {
      x: i.x,
      y: i.y + i[Xt]
    })), n
  }

  function yX(t) {
    this.graph = t
  }

  function gX() {}

  function EX(t) {
    this[Wp] = t
  }

  function xX(t) {
    this.graph = t
  }

  function mX(t) {
    this._k5 = t, this[NL] = function (t) {
      if (this._lX && (this[BL] ? (cancelAnimationFrame(this._lX), this[BL] = null) : clearTimeout(this._lX), this._lX = null), !0 !== t && !1 !== t) return t ? void(this._lX = setTimeout(function () {
        this._k5(), this._lX = null
      }.bind(this), t)) : (this[BL] = !0, void(this._lX = requestAnimationFrame(function () {
        this._k5(), this._lX = null, this[BL] = null
      } [ns](this))));
      this._k5()
    }
  }

  function pX(t) {
    this.graph = t
  }

  function MX(t) {
    this[Wp] = t
  }

  function wX(t, i, n, e, s) {
    this[pi] = t, this[Mi] = GL, this[wi] = i, this[h] = n, this[bn] = e, this[Rn] = s
  }

  function TX(t) {
    this._4J = {}, this._lZ = t, this._lZ._1I[Zi](this[pd], this), this[YO] = zB.INTERACTION_MODE_DEFAULT
  }
  KH = Math.PI / 4, vX[_] = {
    _eV: !1,
    _eX: !1,
    onDataPropertyChange: function (t) {
      this[Wp].callLater(function () {
        this[HI]()
      }, this)
    },
    ondblclick: function (t, i) {
      this[mS] && this.destroy(i)
    },
    destroy: function (t) {
      t[nD] = null, delete this._d6, delete this[nM], delete this[Le], delete this[tI], delete this._kW, delete this._rotatePoint, delete this._eX, delete this._eV, delete this._insets, XC(this, vX, ms, arguments)
    },
    _d6: null,
    _kW: null,
    _8V: function (t) {
      this._d6 = t;
      var i = this._d6.x,
        n = this._d6.y,
        e = this._d6[Ht],
        s = this._d6.height;
      if (this[mS] instanceof tH && this.element[jd], this._eX) {
        var h = [];
        h[D]({
          x: i,
          y: n,
          p: YN[XI],
          cursor: WI,
          rotate: 5 * KH
        }), h[D]({
          x: i + e / 2,
          y: n,
          p: YN.CENTER_TOP,
          cursor: UI,
          rotate: 6 * KH
        }), h[D]({
          x: i + e,
          y: n,
          p: YN.RIGHT_TOP,
          cursor: YI,
          rotate: 7 * KH
        }), h.push({
          x: i,
          y: n + s / 2,
          p: YN[oi],
          cursor: jI,
          rotate: 4 * KH
        }), h.push({
          x: i,
          y: n + s,
          p: YN[bi],
          cursor: YI,
          rotate: 3 * KH
        }), h.push({
          x: i + e,
          y: n + s / 2,
          p: YN.RIGHT_MIDDLE,
          cursor: jI,
          rotate: 0
        }), h[D]({
          x: i + e / 2,
          y: n + s,
          p: YN[li],
          cursor: UI,
          rotate: 2 * KH
        }), h.push({
          x: i + e,
          y: n + s,
          p: YN[yi],
          cursor: WI,
          rotate: KH
        }), this._kW = h
      }
      this._eV ? this._rotatePoint = {
        x: i + e / 2,
        y: n,
        cursor: ZI
      } : this[QI] = null, this[ll]()
    },
    _eY: function (t, i, n, e) {
      t[Ca]();
      var s = (this.handlerSize - 1) / e;
      t[zh](i - s, n - s, 2 * s, 2 * s), t.lineWidth = 1 / e, t[If] = [], t[pa] = _A, t[Da] = "rgba(255, 255, 255, 0.8)", t[ka](), t[La]()
    },
    _64: function (t, i, n, e, s, h) {
      s = s || this[UD], h = h || VI, t[Ca](), s /= e, t.arc(i, n, s, 0, 2 * Math.PI, !1), t[ma] = 1 / e, t[If] = [], t[pa] = _A, t[Da] = h, t[ka](), t.fill()
    },
    _jB: function (t, i) {
      var n = {
        x: t -= this.element.x,
        y: i -= this[mS].y
      };
      return this[mS][It] && IH(n, -this[mS].rotate), n
    },
    doDraw: function (i, n) {
      if (this._d6) {
        if (i[Ta](), i[Aa](this[mS].x, this[mS].y), this[mS].rotate && i[It](this.element[It]), this._rotatePoint) {
          this._64(i, 0, 0, n, 3, KI);
          var t = this[QI].x,
            e = this._rotatePoint.y - this[GI] / n;
          i[Ca](), i[Ra](t, this[QI].y), i[_a](t, e), i.lineWidth = 1 / n, i[pa] = rI, i[ka](), this._64(i, t, e, n)
        }
        if (this._kW) {
          var s = this._d6.x,
            h = this._d6.y,
            r = this._d6[Ht],
            a = this._d6[Xt];
          i[Ca](), i[zh](s, h, r, a), i[ma] = 1 / n, i[If] = [2 / n, 3 / n], i[pa] = rI, i[ka](), PC(this._kW, function (t) {
            this._eY(i, t.x, t.y, n)
          }, this)
        }
        i[Ba]()
      }
    },
    _o83: function () {
      if (this.isShowing() && this[mS]) {
        var t = this[Wp].getUI(this[mS]);
        this[nM] = t[no];
        var i = bX(this[nM], this[nM]._kL),
          n = bX(this[nM], this[nM]._8O);
        this._insets = new UN(i.y - n.y, i.x - n.x, n.bottom - i[Ft], n.right - i.right), this._8V(n)
      }
    },
    _oAP: function (t, i, n) {
      return i[zI](t)
    },
    _oAR: function (t, i) {
      return (!(t instanceof tH) || !t.expanded) && i.isRotatable(t)
    },
    _d8: function (t, i) {
      return t instanceof UG && i[LD](t)
    },
    onstart: function (t, i) {
      if (i[NT]) {
        if (!t[HS]) {
          var n = i[bs](t),
            e = t[ds]();
          if (e != this[mS]) {
            if (this[mS]) {
              if (this._h7(t, i)) return void(t[HS] = !0);
              this.destroy(i)
            }
            if (e && !e[JD] && this._d8(e, i)) {
              var s = this[JI](e, i, n),
                h = this._oAR(e, i, n);
              (s || h) && (this.setCurrentElement(e, !0), this[TS](), this._eX = s, this._eV = h, this[HI]())
            }
          }
        }
      } else this[mS] && this[ms](i)
    },
    onrelease: function (t, i) {
      this[mS] && (this[tI] = !0, this.addDrawable(), i[jT](function () {
        this[HI]()
      }, this))
    },
    _o81: null,
    _h7: function (t, i) {
      var n = i.toLogical(t);
      n = this._jB(n.x, n.y);
      var e, s = i[wo],
        h = this[UD] / s;
      if (this[QI]) {
        var r = this[QI].x,
          a = this[QI].y - this._rotateHandleLength / s;
        if (RN(n.x, n.y, r, a) < h) return this[QI]
      }
      if (this._kW && this._kW.length) return PC(this._kW, function (t, i) {
        if (RN(n.x, n.y, t.x, t.y) < h) return e = t, !1
      }, this), e
    },
    onmousemove: function (t, i) {
      if (this[mS]) {
        var n = this._h7(t, i);
        if (n)
          if (n != this[QI] && this[mS][It]) {
            var e = n.rotate + this[mS][It];
            i[nD] = function (t) {
              t %= 2 * Math.PI;
              var i = Math[Vh](t / KH);
              return 0 == i || 4 == i ? "ew-resize" : 1 == i || 5 == i ? "nwse-resize" : 2 == i || 6 == i ? "ns-resize" : YI
            }(e)
          } else i.cursor = n[nD];
        else i[nD] = null
      }
    },
    startdrag: function (t, i) {
      if (this[mS] && (this[wS](), this._oBanEdit && (this._o81 = this._h7(t, i), this[Le]))) {
        var n;
        if (t[HS] = !0, this._o81 == this[QI]) return this[Le][RS] = i[nd](t), this[Le][It] = this[mS][It] || 0, (n = new wX(i, wX[qI], t, this[mS]))[O] = this[mS].rotate, void i[PT](n);
        (n = new wX(i, wX[tL], t, this[mS]))[_I] = this[Le], i[PT](n)
      }
    },
    _79: function (t, r, a, i, n, e) {
      var s = this._d6,
        o = s.x,
        f = s.y,
        h = s.width,
        c = s[Xt];
      e && (i != h ? n = i * c / h : i = n * h / c);
      var u = t.path[_b],
        _ = i / h,
        l = n / c,
        d = -o * _ + r,
        v = -f * l + a;
      u[At](function (t) {
        if (t.type != zB[sI]) {
          var i = t[ps];
          if (i && i[N])
            for (var n = 0, e = i.length; n < e; n += 2) {
              var s = i[n],
                h = i[n + 1];
              i[n] = (s - o) * _ + r - d, i[n + 1] = (h - f) * l + a - v
            }
        }
      }), this._d6.set(r - d, a - v, i, n), t[yO](t.x + d, t.y + v), t.firePathChange()
    },
    _o84: function (t, i, n, e, s, h) {
      this._d6.set(i, n, e, s), t[Yb] = {
        x: i,
        y: n,
        width: e,
        height: s
      }
    },
    _4H: function (t, i, n, e, s) {
      if (this[mS] instanceof tH && this[mS][jd]) return this[iL](this[mS], t, i, n, e, s);
      if (this.element instanceof jG) return this._79(this[mS], t, i, n, e, s);
      var h = this[nM] instanceof mH;
      if (!h && s) {
        var r = this._d6,
          a = this[nM][nL];
        n != r[Ht] ? e = n * a[Xt] / a[Ht] : n = e * a.width / a[Xt]
      }
      var o = this.element[rb],
        f = new $N(n - this[eL].left - this._insets[$t], e - this[eL].top - this[eL][Ft]);
      if (f.width < 1 && (n = this._insets[Jt] + this[eL].right + 1, f[Ht] = 1), f[Xt] < 1 && (e = this[eL].top + this._insets[Ft] + 1, f[Xt] = 1), h ? this[mS][$l](oH[jg], f) : this[mS][dl] = f, o) {
        var c = (_ = JN(o, n, e)).x + t - (this[nM][fy] || 0),
          u = _.y + i - (this[nM][cy] || 0);
        this._d6.set(t - c, i - u, n, e), this.element[It] && (c = (_ = IH({
          x: c,
          y: u
        }, this[mS].rotate)).x, u = _.y), this[mS].x += c, this.element.y += u
      } else {
        var _;
        c = this._d6.x * n / this._d6[Ht] - t, u = this._d6.y * e / this._d6[Xt] - i, this._d6.set(t + c, i + u, n, e), this[mS][It] && (c = (_ = IH({
          x: c,
          y: u
        }, this[mS][It])).x, u = _.y), this.element.x -= c, this[mS].y -= u
      }
    },
    ondrag: function (t, i) {
      if (this[mS] && this[Le]) {
        if (this[Le] == this[QI]) {
          var n = i[nd](t),
            e = (h = n.x, r = n.y, a = this.element.x, o = this.element.y, f = this[Le][RS].x, c = this[Le][RS].y, SF(a, o, h, r) - SF(a, o, f, c));
          e += this._o81[It] || 0, t.shiftKey && (e = Math[Vh](e / Math.PI * 4) * Math.PI / 4);
          var s = this[mS][It];
          return this[mS][It] = e % (2 * Math.PI), (d = new wX(i, wX.ROTATING, t, this[mS]))[Si] = s, d[O] = this[mS].rotate, void i.onInteractionEvent(d)
        }
        var h, r, a, o, f, c, u = t.dx,
          _ = t.dy,
          l = i[wo];
        u /= l, _ /= l, this.element[It] && (IH(n = {
          x: u,
          y: _
        }, -this[mS].rotate), u = n.x, _ = n.y);
        var d, v = this[Le].p,
          b = this._d6,
          y = b.x,
          g = b.y,
          E = b[Ht],
          x = b[Xt];
        v[ii] == jN ? E <= u ? (y += E, E = u - E || 1) : (y += u, E -= u) : v[ii] == ZN && (E <= -u ? y -= E = -u - E || 1 : E += u), v.verticalPosition == QN ? x <= _ ? (g += x, x = _ - x || 1) : (g += _, x -= _) : v.verticalPosition == VN && (x <= -_ ? g -= x = -_ - x || 1 : x += _), this._4H(y, g, E, x, t[E_]), (d = new wX(i, wX[sL], t, this[mS]))[_I] = this[Le], i[PT](d)
      }
    },
    enddrag: function (t, i) {
      if (this[mS] && this[Le]) {
        var n;
        if (this[Le] == this[QI]) return (n = new wX(i, wX.ROTATE_END, t, this[mS]))[O] = this[mS][It], void i[PT](n);
        (n = new wX(i, wX.RESIZE_END, t, this[mS])).point = this[Le], i[PT](n)
      }
    }
  }, GC(vX, VH), KB[hL] = vX, yX[_] = {
    onstart2: function (t, i) {
      this[ss](t, i)
    },
    onstart: function (t, i) {
      if (!t[HS]) {
        var n = t.getData();
        if (n && !i[vO](n) && (n = null), n && $B(t)) {
          i.reverseSelect(n);
          var e = new wX(i, wX[rL], t, i[tv]);
          i[PT](e)
        } else n && i.selectionModel[aL](n) || (n ? (i[oL](n), i.sendToTop(n)) : i[oL](null), e = new wX(i, wX[rL], t, i[tv]), i[PT](e))
      }
    },
    onkeydown: function (t, i) {
      27 != t[m_] ? $B(t) && 65 == t[m_] && (i[fL](), yN(t)) : i[bO]()
    }
  }, IN[cL] = 0, IN[uL] = 1e3, gX.CLASS_NAME = _L, gX[lL] = 0, gX.CURSOR_OFFSET_Y = 15, xB(q + gX[dL], {
    "user-select": Qh,
    "background-color": vL,
    overflow: io,
    "box-shadow": "0 5px 10px rgba(136, 136, 136, 0.5)",
    color: uM,
    "pointer-events": Qh,
    border: bL,
    padding: yL,
    display: fA,
    position: sl
  }), gX[gL] = function () {
    var t = gX.instance;
    return t || (gX[EL] = new gX)
  }, gX[xL] = function (t, i, n) {
    gX[gL]()[xL](t, i, n)
  }, gX[mL] = function () {
    gX[gL]()[mL]()
  }, gX[_] = {
    getTooltipElement: function () {
      var t = this._mW;
      return t || ((t = x[Bn](Fn))[jl] = gX[dL], this._mW = t, x[no][eo](t)), t
    },
    update: function (t, i) {
      if (this[oI]()) {
        var n = MT == i;
        t && !n && (t = t[kn](/\n/g, pL));
        var e = this[ML]();
        n ? e[wL] = t || "" : e.innerHTML = t || "", s = e, h = this[TL].x + gX.CURSOR_OFFSET_X, r = this[TL].y + gX[OL], a = x[z_], o = new WN(u[zl], u.pageYOffset, a[Kn] - 2, a[cd] - 2), f = s[gS], c = s.offsetHeight, h + f > o.x + o[Ht] && (h = o.x + o[Ht] - f), r + c > o.y + o[Xt] && (r = o.y + o[Xt] - c), h < o.x && (h = o.x), r < o.y && (r = o.y), s.style[Jt] = h + Wr, s[Yn].top = r + Wr
      }
      var s, h, r, a, o, f, c
    },
    setTooltip: function (t, i) {
      if (!t || !t.content) return this[TL] = null, this._mW && (this._mW[Yn][U_] = Qh), void(this[AL] = Date.now());
      this[AL] = null, this._info = t, this.getTooltipElement().style[U_] = "", this[SL](this[TL].content, this[TL][Mi]), isNaN(i) && (i = IN[cL]), i && this[DL](this[IL][ns](this, !1), i)
    },
    _o86: null,
    _lX: null,
    stopTimer: function () {
      this._lX && (clearTimeout(this._lX), this._lX = null)
    },
    startTimer: function (t, i) {
      this[LL](), this._lX = setTimeout(function (t) {
        this._lX = null, t()
      }.bind(this, t), i)
    },
    show: function (t, i, n) {
      this[oI]() || this[AL] && Date.now() - this[AL] < 1e3 ? this[IL](t, n) : (isNaN(i) && (i = IN[uL]), i ? this[DL](this[IL][ns](this, t, n), i) : this.setTooltip(t, n))
    },
    isShowing: function () {
      return this._mW && Qh !== this._mW[Yn][U_]
    },
    hide: function () {
      this[LL](), this.isShowing() && this[IL](!1)
    }
  }, EX[_] = {
    onstart: function (t, i) {
      this.destroy(i)
    },
    _jZ: null,
    onmousemove: function (t, i) {
      if (i[RL]) {
        var n = t.getData(),
          e = n ? i[PL](n, t) : null;
        e ? gX[xL]({
          target: n,
          content: e,
          type: n[kL],
          x: t.pageX,
          y: t[CL]
        }, i.tooltipDelay, i.tooltipDuration) : gX[mL]()
      }
    },
    destroy: function (t) {
      gX.hide()
    }
  }, xX[_] = {
    destroy: function (t) {
      this[FL] && (this[FL] = null)
    },
    onmousewheel: function (t, i) {
      if (!1 !== i.enableWheelZoom && t[gI]) {
        if (KB.stopEvent(t), i.stopAnimation(), i[GO]) {
          var n = this.delayAction;
          n = n || (this[FL] = new mX(function () {
            i[zO](!1)
          })), i[zO](!0), n.action(100)
        }
        i.zoomByMouseEvent(t, t[gI], !1)
      }
    }
  }, pX.prototype = {
    onclick: function (t, i) {
      i[$L](t, !$B(t))
    }
  }, MX[_] = {
    onclick: function (t, i) {
      i[$L](t, $B(t))
    }
  }, GC(wX, tB), wX.ELEMENT_MOVE_START = HL, wX[VD] = XL, wX.ELEMENT_MOVE_END = WL, wX.ELEMENT_CREATED = UL, wX[wO] = YL, wX[yI] = jL, wX[xI] = ZL, wX[mI] = QL, wX.POINT_ADD = VL, wX[cI] = KL, wX[tL] = zL, wX[sL] = JL, wX.RESIZE_END = qL, wX.ROTATE_START = tR, wX[iR] = nR, wX[eR] = sR, wX.PAN_START = hR, wX.PAN_END = rR, wX.GROUP_EXPANDED = aR, wX[RD] = oR, wX[rL] = uO, wX[II] = fR, wX.SELECT_BETWEEN = cR, wX[uR] = _R, wX.LONG_CLICK = lR, TN(TX[_] = {
    _o87: function (t) {
      if (this[dR]) switch (t[wi]) {
        case fB[nn]:
          this._interactionSupport._4L(t[bn]);
          break;
        case fB.KIND_CLEAR:
          this._interactionSupport._7G(t[bn])
      }
    },
    destroy: function () {
      delete this._lZ, delete this._4J, this[dR] && (this._interactionSupport._iW(), delete this._interactionSupport)
    },
    _lZ: null,
    _4J: null,
    defaultMode: null,
    _h9: function (t, i, n) {
      this._4J[t] = new zH(i, n), t == this.currentMode && this[dR]._7I(i)
    },
    addCustomInteraction: function (t) {
      this._interactionSupport._8(t)
    },
    removeCustomInteraction: function (t) {
      this._interactionSupport._4(t)
    },
    _nV: function (t) {
      return this._4J[t] || OX[t]
    }
  }, {
    defaultCursor: {
      get: function () {
        if (this[vR]) return this[vR].defaultCursor
      }
    },
    currentMode: {
      get: function () {
        return this[UO]
      },
      set: function (t) {
        this[UO] != t && (this[UO], this._interactionSupport || (this._interactionSupport = new FB(this._lZ)), this[UO] = t, this.currentInteractionMode = this._nV(this._oBurrentMode), this._lZ[nD] = this.defaultCursor, this.currentInteractionMode ? this[dR]._7I(this.currentInteractionMode[bR](this._lZ)) : this[dR]._7I([]))
      }
    }
  });
  var OX = {};

  function AX(t) {
    this.graph = t
  }
  IN[yR] = function (t, i, n) {
    var e = new zH(i, n);
    OX[t] = e
  }, zB[gR] = ER, zB[xR] = bS, zB[mR] = pR, zB.INTERACTION_MODE_ZOOMIN = MR, zB.INTERACTION_MODE_ZOOMOUT = wR, zB.INTERACTION_MODE_CREATE_SIMPLE_EDGE = TR, zB[OR] = AR, zB.INTERACTION_MODE_CREATE_SHAPE = SR, zB[DR] = IR, IN.registerInteractions(zB[gR], [yX, cX, xX, oX, rX, EX, dX]), IN[yR](zB[LR], [aX, eX, yX, cX, xX, oX, EX]), IN[yR](zB[OR], [aX, uX, yX, qH, cX, xX, oX, EX]), IN[yR](zB[RR], [aX, iX, yX, cX, xX, oX, EX]), IN[yR](zB[DR], [nX, yX, cX, xX, oX, EX]), IN[yR](zB.INTERACTION_MODE_DEFAULT, [aX, uX, vX, yX, fX, cX, xX, oX, rX, EX, dX]), IN[yR](zB[mR], [aX, uX, vX, yX, fX, lX, cX, xX, oX, rX, EX]), IN[yR](zB.INTERACTION_MODE_ZOOMIN, [xX, oX, pX], CB), IN[yR](zB[PR], [xX, oX, MX], NB), KB[kR] = cX, KB[CR] = yX, KB[NR] = fX, KB[BR] = xX, KB[FR] = rX, KB[$R] = oX, KB[GR] = EX, KB[HR] = lX, KB.RectangleSelectionInteractionByRightButton = dX, KB[XR] = uX, (KB.Layouter = AX)[_] = {
    getNodeBounds: function (t) {
      return this.graph[WR](t)
    },
    isLayoutable: function (t, i) {
      return this[Wp][dO](t) && !1 !== t.layoutable
    },
    getLayoutResult: function (t) {},
    updateLocations: function (t, i, n, e, s) {
      if (!0 !== i) {
        for (var h in t) {
          var r = t[h];
          r[UR].setLocation(r.x, r.y)
        }
        s && s[m](this, t)
      } else {
        if (this[YR] || (this[YR] = new UX), n && (this[YR][oS] = n), e && (this[YR][jR] = e), this[YR][ZR] = t, s) {
          var a = s,
            o = this;
          s = function () {
            a[m](o, t)
          }
        }
        this[YR].start(s)
      }
    },
    _hB: function (t) {
      var i, n, e, s = null;
      t && (i = t[QR], s = t.callback, n = t[oS], e = t[jR]);
      var h = this.getLayoutResult(t);
      return !!h && (this[VR](h, i, n, e, s), h)
    },
    doLayout: function (t, i) {
      if (!this[Wp] || !0 === i) return this._hB(t);
      this[Wp][jT](function () {
        this._hB(t)
      }, this)
    }
  }, zB[KR] = 110, zB.DIRECTION_LEFT = 120, zB[zR] = 130, zB[JR] = 210, zB.DIRECTION_TOP = 220, zB[qR] = 230, zB[tP] = 111, zB[iP] = 112, zB.DIRECTION_LEFT_TOP = 121, zB.DIRECTION_LEFT_BOTTOM = 122, zB[nP] = 211, zB[eP] = 212, zB[sP] = 221, zB[hP] = 222;
  var SX = rP,
    DX = aP;

  function IX(t) {
    return 100 <= t && t < 200
  }

  function LX(t) {
    this.graph = t
  }
  zB[oP] = SX, zB[fP] = cP, zB[uP] = _P, zB[lP] = DX, KB[dP] = IX, LX[_] = {
    hGap: 50,
    vGap: 50,
    parentChildrenDirection: 210,
    layoutType: SX,
    defaultSize: {
      width: 50,
      height: 60
    },
    getNodeSize: function (t) {
      if (this[Wp]._96[xe]) {
        var i = this[Wp].getUI(t);
        if (i) return i._h1
      }
      return t[Io] && t.image[ of ] ? {
        width: t[Io][ of ][Ht],
        height: t[Io][ of ][Xt]
      } : this[vP]
    },
    _dS: function (t, i) {
      var n = t.id;
      if (!(n in this[bP]) && this[yP](t)) {
        var e, s = this[gP](t);
        e = s instanceof WN ? [-s.x, -s.y] : [s.width / 2, s.height / 2], t[EP];
        var h = i ? this[bP][i.id] : this[xP];
        this[bP][n] = new RX(this, this[mP](t), this[pP](t), this[MP](t), t[EP], h, t, s.width, s[Xt], e)
      }
    },
    getHGap: function (t) {
      return t && dN(t.hGap) ? t[wP] : this[wP]
    },
    getVGap: function (t) {
      return t && dN(t[TP]) ? t[TP] : this[TP]
    },
    getLayoutType: function (t) {
      return t && t[OP] ? t[OP] : this[OP]
    },
    _o8P: null,
    _oB8: null,
    _mC: function () {
      this[bP] = null, this[xP] = null
    },
    compareFn: null,
    getLayoutResult: function (t) {
      var i, n, e, s, h = this.graph;
      t instanceof Object && (i = t.x, n = t.y, h = t[AP] || this[Wp], e = t[ of ], s = t[SP]), this[bP] = {}, this[xP] = new RX(this), this[xP]._nX(this[wP], this[TP], this[EP], this.layoutType);
      var r = {};
      return jX(h, this._dS, this, !1, s) && (this._oB8._hB(i || 0, n || 0, r), e && e.set(this[xP].x, this[xP].y, this[xP][Ht], this[xP].height)), this._mC(), r
    },
    doLayout: function (t, i) {
      if (dN(t)) {
        var n = t,
          e = 0;
        dN(i) && (e = i), t = {
          x: n,
          y: e
        }, i = !0
      }
      return XC(this, LX, DP, [t, i])
    }
  }, GC(LX, AX);
  var RX = function (t, i, n, e, s, h, r, a, o, f) {
    this._i8 = t, this._nM = i || 0, this._nN = n || 0, this[OP] = e, this[EP] = s, (this[IP] = h) && h._iA(this), this.node = r, this._fP = a, this._dU = o, this._o8nchorLocation = f
  };

  function PX(t) {
    this.graph = t, this.currentMovingNodes = {}
  }

  function kX(t, i, n, e) {
    this.graph = t, dN(i) && (this.radius = i), dN(n) && (this.gap = n), dN(e) && (this[sk] = e)
  }
  RX.prototype = {
    _i8: null,
    _nX: function (t, i, n, e) {
      this._nM = t, this._nN = i, this[EP] = n, this[OP] = e
    },
    _97: function () {
      this._gX = []
    },
    _nM: 0,
    _nN: 0,
    _gX: null,
    _fP: 0,
    _dU: 0,
    layoutType: null,
    parentChildrenDirection: null,
    _iA: function (t) {
      this._gX || (this._gX = []), this._gX[D](t)
    },
    _dW: function (i, n, t, e, s) {
      var h = new WN;
      return t(this._gX, function (t) {
        t._44(i, n), h.add(t), e ? i += t[Ht] + this._nM : n += t.height + this._nN
      }, this), h
    },
    _99: function (n, e, t, s, i) {
      var h, r = s ? this._nM : this._nN,
        a = s ? this._nN : this._nM,
        o = s ? "width" : Xt,
        f = s ? "height" : Ht,
        c = s ? "_fP" : LP,
        u = s ? "_dU" : RP,
        _ = s ? "hostDX" : PP,
        l = s ? "hostDY" : kP,
        d = new WN,
        v = 0,
        b = 0,
        y = [],
        g = 0,
        E = 0;
      t(this._gX, function (t) {
        var i = b <= E;
        t._inheritedParentChildrenDirection = i ? s ? 120 : 220 : s ? 110 : 210, t._44(n, e), i ? (y.push(t), v = Math.max(v, t[o]), b += t[f] + a) : ((h = h || [])[D](t), g = Math.max(g, t[o]), E += t[f] + a)
      }, this), b -= a, E -= a;
      var x = Math.max(b, E),
        m = r,
        p = 0;
      this.node && (i && (m += this[c] + r, x > this[u] ? this[l] = (x - this[u]) / 2 : p = (this[u] - x) / 2), this[_] = v + m / 2 - this[c] / 2);
      var M, w = p;
      return PC(y, function (t) {
        s ? t[ca](v - t[o], w) : t.offset(w, v - t[o]), w += a + t[f], d.add(t)
      }, this), h && (w = p, M = v + m, PC(h, function (t) {
        s ? t.offset(M, w) : t.offset(w, M), w += a + t[f], d.add(t)
      }, this)), d
    },
    offset: function (t, i) {
      this.x += t, this.y += i, this[CP] += t, this.nodeY += i, this._89(t, i)
    },
    _oBA: function (t, i) {
      return 2 * this.cx - t - i - t
    },
    _oBC: function (t, i) {
      return 2 * this.cy - t - i - t
    },
    _nP: function (t) {
      if (this._gX && 0 != this._gX[N]) {
        if (t) return this[UR] && (this.nodeX += this[NP](this[CP], this._fP)), void PC(this._gX, function (t) {
          t[ca](this[NP](t.x, t[Ht]), 0)
        }, this);
        this.node && (this[BP] += this[FP](this[BP], this._dU)), PC(this._gX, function (t) {
          t[ca](0, this[FP](t.y, t.height))
        }, this)
      }
    },
    _89: function (i, n) {
      this._gX && PC(this._gX, function (t) {
        t.offset(i, n)
      }, this)
    },
    _44: function (t, i) {
      if (this.x = t || 0, this.y = i || 0, this._gX && 0 != this._gX[N]) {
        if (this._i8 && this._i8[$P]) {
          var n = this._i8.compareFn;
          this._gX[zp](function (t, i) {
            return n(t[UR], i.node)
          })
        }
        this._1W(this.x, this.y, this[OP])
      } else this[UR] && (this[Ht] = this._fP, this[Xt] = this._dU, this[CP] = this.x, this[BP] = this.y)
    },
    _8A: function (i) {
      if (this.node) {
        var t = this[GP],
          n = t[0],
          e = t[1];
        i[this[UR].id] = {
          node: this[UR],
          x: this[CP] + n,
          y: this[BP] + e,
          left: this.nodeX,
          top: this[BP],
          width: this._fP,
          height: this._dU
        }
      }
      this._gX && PC(this._gX, function (t) {
        t._8A(i)
      }, this)
    },
    _hB: function (t, i, n) {
      this._44(t, i), this._8A(n)
    },
    _1W: function (t, i, n) {
      var e, s = t,
        h = i;
      !this.parentChildrenDirection && this.parentBounds && (this.parentChildrenDirection = this._inheritedParentChildrenDirection || this[IP][EP]);
      var r = this[EP],
        a = IX(r);
      if (this.node) {
        var o = 120 == r || 122 == r || 121 == r || 220 == r || 221 == r || 222 == r;
        (e = 130 == r || 230 == r) || (a ? t += this._fP + this._nM : i += this._dU + this._nN)
      }
      var f, c, u, _ = this[UR] && this[UR].layoutReverse ? CC : PC,
        l = 0,
        d = 0;
      (f = n == DX ? this._99(t, i, _, !a, e) : (c = n == SX ? !a : cP == n, this._dW(t, i, _, c, e))) && !f[Tt]() && (l = f.width, d = f[Xt], this.add(f)), this[UR] && (this[CP] = s, this.nodeY = h, this.hostDX !== I || this[PP] !== I ? (this[CP] += this[kP] || 0, this[BP] += this[PP] || 0) : (u = 210 == r || 220 == r || 120 == r || 110 == r ? 1 : 212 == r || 222 == r || 122 == r || 112 == r ? 0 : 2, a ? (1 == u ? this.nodeY += d / 2 - this._dU / 2 : 2 == u && (this[BP] += d - this._dU), h > this[BP] && this.offset(0, h - this.nodeY)) : (1 == u ? this[CP] += l / 2 - this._fP / 2 : 2 == u && (this[CP] += l - this._fP), s > this[CP] && this.offset(s - this[CP], 0))), this[Kt](this[CP], this.nodeY, this._fP, this._dU), o && this._nP(a))
    },
    node: null,
    uiBounds: null
  }, GC(RX, WN), PX[_] = {
    layoutDatas: null,
    isMovable: function (t) {
      return !this[HP][t.id]
    },
    _7B: !1,
    _3L: function () {
      this._7B = !0, this.graph._1I[Zi](this[XP], this), this[Wp]._1B[Zi](this._28, this)
    },
    _1O: function () {
      this._7B = !1, this[Wp]._1I.removeListener(this[XP], this), this.graph._1B.removeListener(this._28, this)
    },
    invalidateFlag: !0,
    invalidateLayoutDatas: function () {
      this[eA] = !0
    },
    resetLayoutDatas: function () {
      return this[eA] = !1, this[WP] = function () {
        var e, s, h = {},
          r = [],
          a = 0,
          o = {},
          f = 0;
        this[Wp][At](function (t) {
          if (this[yP](t))
            if (t instanceof UG) {
              var i = {
                node: t,
                id: t.id,
                x: t.x,
                y: t.y
              };
              for (this[UP] && this.appendNodeInfo(t, i), h[t.id] = i, r[D](i), a++, s = t[Ci]; s instanceof tH;) {
                var n = (e = e || {})[s.id];
                (n = n || (e[s.id] = {
                  id: s.id,
                  children: []
                }))[y][D](i), s = s.parent
              }
            } else t instanceof GG && !t[Ad]() && t.fromAgent && t.toAgent && (i = {
              edge: t
            }, o[t.id] = i, f++)
        }, this);
        var t = {};
        for (var i in o) {
          var n = o[i],
            c = n[Qv],
            u = c[Td],
            _ = c[Od],
            l = u.id + $n + _.id,
            d = _.id + $n + u.id;
          if (h[u.id] && h[_.id] && !t[l] && !t[d]) {
            var v = h[u.id],
              b = h[_.id];
            n[kv] = v, n.to = b, t[l] = n, this.appendEdgeInfo && this[YP](c, n)
          } else delete o[i], f--
        }
        return {
          groups: e,
          nodesArray: r,
          nodes: h,
          nodeCount: a,
          edges: o,
          edgeCount: f,
          minEnergy: this[jP](a, f)
        }
      } [m](this)
    },
    _28: function (t) {
      wX[ZD] == t[wi] ? (this.currentMovingNodes = {}, t[Rn][At](function (t) {
        this[HP][t.id] = t
      }, this)) : wX[ZP] == t[wi] && (this.currentMovingNodes = {})
    },
    _o88: function (t) {
      this.invalidateLayoutDatas()
    },
    isRunning: function () {
      return this[QP] && this.timer._f0()
    },
    getLayoutResult: function (t) {
      this[VP](), this[KP]();
      for (var i = this.getMaxIterations(this[WP].nodeCount || 0, this[WP].edgeCount || 0), n = 0; n < i && !1 !== this[zP](!1); n++);
      var e = this[WP][JP];
      return this[qP](), e
    },
    _n0: function () {
      return !1
    },
    step: function (t) {
      if (!1 === t) return this._n0(this[tk]);
      !this[eA] && this[WP] || this[KP]();
      var i = this._n0(t),
        n = this[WP][JP];
      for (var e in n) {
        var s = n[e],
          h = s[UR];
        this[gO](h) ? h[yO](s.x, s.y) : (s.x = h.x, s.y = h.y, s.vx = 0, s.vy = 0)
      }
      return i
    },
    onstop: function () {
      delete this.layoutDatas
    },
    start: function (t) {
      if (this[ik]()) return !1;
      this._7B || this._3L(), this[nk] || (this._l0r = function (t) {
        return this[zP](t)
      } [ns](this)), this[ek](), this[QP] = new HB(this[nk]);
      var i = this;
      return this.timer._m3(function () {
        i[qP](), t && t()
      }), !0
    },
    stop: function () {
      this[QP] && (this[QP]._n3(), this[qP]())
    },
    getMaxIterations: function (t, i) {
      return Math.min(1e3, 3 * t + 10)
    },
    minEnergyFunction: function (t, i) {
      return 10 + Math.pow(t + i, 1.4)
    },
    resetGraph: function () {
      this._7B || this._3L(), this[KP]()
    },
    destroy: function () {
      this[VP](), this._1O()
    }
  }, GC(PX, AX), KB[hk] = kX;
  var CX = rk,
    NX = ak,
    BX = ok;
  zB[fk] = CX, zB[ck] = NX, zB[uk] = _k, zB[lk] = BX, kX[_] = {
    angleSpacing: CX,
    radiusMode: BX,
    gap: 4,
    radius: 50,
    startAngle: 0,
    _o8P: null,
    _oB8: null,
    _mC: function () {
      this._o8P = null, this[xP] = null
    },
    getLayoutResult: function (t) {
      var i, n = 0,
        e = 0,
        s = this.graph;
      t instanceof Object && (n = t.cx || 0, e = t.cy || 0, s = t.root || this[Wp], i = t.bounds), this[bP] = {}, this[xP] = new FX(this);
      var h = {};
      return ZX(s, this._dS, this) && (this._oB8._gX && 1 == this[xP]._gX.length && (this._oB8 = this[xP]._gX[0]), this[xP]._fR(!0), this[xP]._6J(n, e, this[sk], h, i)), this._mC(), h
    },
    _dS: function (t, i) {
      if (this.isLayoutable(t)) {
        var n = i ? this._o8P[i.id] : this[xP];
        this[bP][t.id] = new FX(this, t, n)
      }
    },
    defaultSize: 40,
    getRadius: function (t, i, n) {
      return this[xi]
    },
    getNodeSize: function (t, i, n) {
      if (this[Wp]._96._oAE) {
        var e = this.graph.getUI(t);
        if (e) return (e._h1[Ht] + e._h1[Xt]) / 2
      }
      return this[vP]
    },
    getGap: function (t, i, n) {
      return this.gap
    },
    _36: function (t, i, n) {
      return this[gP](t, i, n) + this.getGap(t, i, n)
    }
  };
  var FX = function (t, i, n) {
    this.layouter = t, i && (this._nS = i, this.id = i.id), n && (n._iA(this), n._nQ = !1, this._mL = n._mL + 1)
  };
  mG = 2 * Math.PI, FX[_] = {
    _mJ: 0,
    _mK: 0,
    _lJ: 0,
    _fQ: 0,
    _dY: 0,
    _mL: 0,
    _nQ: !0,
    _nR: 0,
    _iB: 0,
    _gX: null,
    _nS: null,
    _iA: function (t) {
      this._gX || (this._gX = []), this._gX[D](t), t.parent = this
    },
    _iC: function (i) {
      this._mK = (this._mK + i) % mG, this._gX && (1 != this._gX[N] ? (i = this._mK + Math.PI, PC(this._gX, function (t) {
        t._iC(i)
      }, this)) : this._gX[0]._iC(this._mK))
    },
    _9B: 0,
    _8C: function (t) {
      return this._nS && (this._iB = this[dk]._36(this._nS, this._mL, this._nQ) / 2), this._gX ? (this._iB, this._9B = this._gX[N], this._9B <= 2 || this[dk][vk] == NX ? function (t) {
        var i = this._9B,
          n = 2 * Math.PI / i,
          e = 0,
          s = t ? 0 : 1 < i ? -n / 2 : 0;
        return PC(this._gX, function (t) {
          t._mK = s % mG, s += n, t._mJ = n;
          var i = t._fR();
          e < i && (e = i)
        }, this), [e, n]
      }.call(this, t) : function (e) {
        var n, t = this._gX.length,
          s = 0,
          h = 0;
        if (PC(this._gX, function (t) {
            var i = t._fR();
            i < 1 && (i = 1), h += i, s < i && (s = i, n = t)
          }, this), 1 < t) {
          var r = 0,
            a = {},
            o = h / t / 3;
          h = 0, PC(this._gX, function (t) {
            var i = t._nR;
            i < o && (i = o), a[t.id] = i, h += i
          }, this);
          var f = mG / h;
          PC(this._gX, function (t, i) {
            var n = a[t.id] * f;
            0 === i && (r = e ? -n / 2 : -n), t._mK = r + n / 2, t._mJ = n, r += n
          }, this)
        }
        return [s, n._mJ]
      } [m](this, t)) : null
    },
    _fR: function (t) {
      var i = this._8C(t);
      if (!i) return this._nR = this._iB;
      var n = i[0],
        e = i[1],
        s = this[dk][bk](this._nS, this._mL);
      if (s < this._iB && (s = this._iB), this._fQ = s, this._iB + n > s && (s = this._iB + n), n && 1 < this._9B && e < Math.PI) {
        var h = n / Math.sin(e / 2);
        s < h && (s = h)
      }
      return this._lJ = s, this._nR = s + n, this._nS && this._gX && this.layouter[yk] == BX && PC(this._gX, function (t) {
        var i = t._nR;
        1 == t._9B && (i /= 2);
        var n = this._iB + i,
          e = t._mJ;
        if (e && e < Math.PI) {
          var s = i / Math.sin(e / 2);
          i < s && (i = s)
        }
        i < n && (i = n), t._dY = i
      }, this), this._nS && !t || this._iC(0), this._nR
    },
    _6J: function (h, r, a, o, f) {
      if (this._nS && (o[this._nS.id] = {
          x: h,
          y: r,
          node: this._nS
        }, f && f.addRect(h - this._iB / 2, r - this._iB / 2, this._iB, this._iB)), this._gX)
        if (this._nS || 1 != this._gX[N]) {
          a = a || 0;
          var c = this._lJ,
            u = this._fQ;
          PC(this._gX, function (t) {
            var i = c;
            t._dY && (i = Math.max(u, t._dY));
            var n = t._mK + a,
              e = h + i * Math.cos(n),
              s = r + i * Math.sin(n);
            t._6J(e, s, a, o, f)
          }, this)
        } else this._gX[0]._6J(h, r, a, o, f)
    }
  }, GC(kX, AX);
  var $X = function (t) {
    HC(this, $X, arguments)
  };
  GC($X, WX);
  var GX = function (t, i) {
    (this[gk] = t) == (this[Ek] = i) ? (this[Ad] = !0, this._mM = t._lS) : this._mM = new LN, this._9D = [], this._iD = IN.EDGE_BUNDLE_EXPANDED
  };

  function HX(t) {
    t.fx -= t.x * this[Ck], t.fy -= t.y * this[Ck]
  }

  function XX(t) {
    if (0 != t.k) {
      var i = this._dA,
        n = t.from,
        e = t.to,
        s = e.x - n.x,
        h = e.y - n.y,
        r = s * s + h * h,
        a = Math[Lt](r) || .1,
        o = (a - i) * t.k * this.elastic,
        f = (o /= a) * s,
        c = o * h;
      e.fx -= f, e.fy -= c, n.fx += f, n.fy += c
    }
  }

  function WX(t) {
    HC(this, WX, arguments)
  }
  IN[xk] = !0, GX[_] = {
    node1: null,
    node2: null,
    _mM: null,
    _iD: IN.EDGE_BUNDLE_EXPANDED,
    _9D: null,
    _iF: null,
    agentEdge: null,
    _oBD: function (i, n, e) {
      this._mM[At](function (t) {
        if (!e || t[Rv] == e || t[Td] == e) return i[m](n, t)
      })
    },
    _6L: 0,
    _6N: 0,
    _k1: function (t, i) {
      if (!1 === this._mM.add(t)) return !1;
      i == this[gk] ? this._6L++ : this._6N++, this._oAE ? this._16(t) : this._oAE = !0
    },
    _dZ: function (t, i) {
      if (!1 === this._mM[en](t)) return !1;
      i == this.node1 ? this._6L-- : this._6N--, this._16(t), this._mM.forEach(function (t) {
        t[Kd] = !0, t[Hd] = !0
      }, this)
    },
    _16: function (t) {
      this[mk] = !0, this._6W = !0, t[Kd] = !0, t.__4D = !0
    },
    invalidate: function () {
      this._d0()
    },
    _d0: function () {
      this._6W || (this._6W = !0, this._mM[At](function (t) {
        t[Kd] = !0
      }))
    },
    isEmpty: function () {
      return this._mM[Tt]()
    },
    isPositiveOrder: function (t) {
      return this[gk] == t[Rv] || this[gk] == t[Td]
    },
    canBind: function (t) {
      return t && this._6W && this[Ya](t), 1 < this._mM[N] && 1 < this._9D[N]
    },
    _j2: function (t) {
      return this._9D.indexOf(t)
    },
    getYOffset: function (t) {
      return this._iF[t.id]
    },
    _59: function (t) {
      if (this[Ww]()) {
        var i = {},
          n = this._9D.length;
        if (!(n < 2)) {
          var e = 0,
            s = this._9D[0];
          i[s.id] = 0;
          for (var h = 1; h < n; h++) s = this._9D[h], e += t[Ny](s, oH.EDGE_BUNDLE_GAP) || TH[oH.EDGE_BUNDLE_GAP], i[s.id] = e;
          if (!this[Ad] && e) {
            var r = e / 2;
            for (h = 0; h < n; h++) i[(s = this._9D[h]).id] -= r
          }
          this._iF = i
        }
      } else this._iF = {}
    },
    _oBE: function (t) {
      return this._iD != t && (this._iD = t, this._d0(), !0)
    },
    reverseExpanded: function () {
      return this[pk](!this._iD)
    },
    _1D: function () {
      var i;
      this._9D.length = 0, this._mM[At](function (t) {
        if (t.isBundleEnabled()) {
          if (!this[Yw](t)) return void(i = i || []).push(t);
          this._9D[D](t)
        }
      }, this), i && (this._9D = i.concat(this._9D))
    },
    _f8: function (t) {
      return t == this[BO] || !this.canBind() || this._iD
    },
    validate: function (t) {
      this._6W = !1, this._mM[At](function (t) {
        t._edgeBundleInvalidateFlag = !1
      }), this[mk] && (this._1D(), this[mk] = !1), 1 < this._9D.length && this[Mk] instanceof Function && this[Mk](this._9D);
      var i = this._iD,
        n = !this[Ww]() || i;
      if (PC(this._9D, function (t) {
          t._$p = !0, (t._j9InBundle = n) && (t[Hd] = !0)
        }, this), !n) return this._o8R(this._9D[0], t), this[BO][wk] = !0, void(this[BO].__4D = !0);
      this[Tk](null, t), this._59(t)
    },
    _o8R: function (t, i) {
      if (t != this[BO]) {
        var n = this[BO];
        return this[BO] = t, i && i._50(new iB(this, BO, t, n)), !0
      }
    }
  }, TN(GX[_], {
    bindableEdges: {
      get: function () {
        return this._9D
      }
    },
    edges: {
      get: function () {
        return this._mM._kH
      }
    },
    length: {
      get: function () {
        return this._mM ? this._mM.length : 1
      }
    },
    expanded: {
      get: function () {
        return this._iD
      },
      set: function (t) {
        if (this._iD == t) return !1;
        this._iD = t, this._d0()
      }
    }
  }), WX[_] = {
    appendNodeInfo: function (t, i) {
      i[Ak] = t[Nk] || 1, i.fx = 0, i.fy = 0, i.vx = 0, i.vy = 0
    },
    appendEdgeInfo: function (t, i) {
      i.k = t[Bk] || 1
    },
    setMass: function (t, i) {
      t[Nk] = i, this[WP] && this.layoutDatas[JP] && (t = this.layoutDatas[JP][t.id]) && (t[Ak] = i)
    },
    setElasticity: function (t, i) {
      t.layoutElasticity = i, this[WP] && this[WP].edges && (t = this.layoutDatas.edges[t.id]) && (t.k = i)
    },
    _dA: 50,
    _jH: .5,
    timeStep: .05,
    repulsion: 50,
    attractive: .1,
    elastic: 3,
    _n1: 1e3,
    _kY: function (t) {
      return this._n1 + .3 * (t - this._n1)
    },
    _n0: function (t, i) {
      Date.now();
      var n = this[WP][JP];
      for (var e in n) {
        var s = n[e];
        i && (s.x += Math[W]() - .5, s.y += Math[W]() - .5), HX[m](this, s)
      }
      var h = this[WP][Fk];
      if (h)
        for (var e in h) {
          var r = h[e][y],
            a = 0,
            o = 0;
          r.forEach(function (t) {
            a += t.x, o += t.y
          }), a /= r.length, o /= r[N];
          var f = 10 * this.attractive;
          r[At](function (t) {
            t.fx -= (t.x - a) * f, t.fy -= (t.y - o) * f
          })
        }
      var c = this._nbodyForce;
      for (var e in (c = c || (this[$k] = function () {
          var l = -1e6;

          function e(t, i) {
            this.node = t, this[no] = i
          }

          function t() {
            this.stack = [], this.popIdx = 0
          }

          function i() {
            this[no] = null, this[Ok] = [], this[Ak] = 0, this[Sk] = 0, this[Dk] = 0, this[Jt] = 0, this.top = 0, this[Ft] = 0, this.right = 0, this[Ik] = !1
          }

          function g() {
            var t;
            return n[v] ? ((t = n[v])[Ok][0] = null, t.quads[1] = null, t[Ok][2] = null, t.quads[3] = null, t[no] = null, t.mass = t.massX = t[Dk] = 0, t.left = t[$t] = t.top = t.bottom = 0, t[Ik] = !1) : (t = new i, n[v] = t), ++v, t
          }

          function E(t, i) {
            var n = Math.abs(t.x - i.x),
              e = Math.abs(t.y - i.y);
            return n < 1e-8 && e < 1e-8
          }

          function d(t) {
            for (x[Lk](), x[D](m, t); !x.isEmpty();) {
              var i = x.pop(),
                n = i[UR],
                e = i[no];
              if (n[Ik]) {
                var s = e.x,
                  h = e.y;
                n[Ak] = n.mass + e.mass, n[Sk] = n[Sk] + e.mass * s, n[Dk] = n[Dk] + e.mass * h;
                var r = 0,
                  a = n.left,
                  o = (n[$t] + a) / 2,
                  f = n.top,
                  c = (n[Ft] + f) / 2;
                if (o < s) {
                  r += 1;
                  var u = a;
                  o += (a = o) - u
                }
                if (c < h) {
                  r += 2;
                  var _ = f;
                  c += (f = c) - _
                }
                var l = n.quads[r];
                l || ((l = g()).left = a, l.top = f, l[$t] = o, l[Ft] = c, n.quads[r] = l), x[D](l, e)
              } else if (n.body) {
                var d = n[no];
                if (n[no] = null, n[Ik] = !0, E(d, e)) {
                  if (n[$t] - n.left < 1e-8) return;
                  do {
                    var v = Math[W](),
                      b = (n[$t] - n.left) * v,
                      y = (n[Ft] - n.top) * v;
                    d.x = n[Jt] + b, d.y = n.top + y
                  } while (E(d, e))
                }
                x.push(n, d), x[D](n, e)
              } else n[no] = e
            }
          }
          t[_] = {
            isEmpty: function () {
              return 0 === this[Rk]
            },
            push: function (t, i) {
              var n = this[Pk][this[Rk]];
              n ? (n[UR] = t, n[no] = i) : this[Pk][this[Rk]] = new e(t, i), ++this.popIdx
            },
            pop: function () {
              if (0 < this[Rk]) return this[Pk][--this[Rk]]
            },
            reset: function () {
              this.popIdx = 0
            }
          };
          var u = [],
            x = new t,
            n = [],
            v = 0,
            m = g();
          return {
            init: function (t, i) {
              l = i;
              var n, e = Number.MAX_VALUE,
                s = Number[zt],
                h = Number[kk],
                r = Number[kk],
                a = t,
                o = a[N];
              for (n = o; n--;) {
                var f = a[n].x,
                  c = a[n].y;
                f < e && (e = f), h < f && (h = f), c < s && (s = c), r < c && (r = c)
              }
              var u = h - e,
                _ = r - s;
              for (_ < u ? r = s + u : h = e + _, v = 0, (m = g())[Jt] = e, m[$t] = h, m.top = s, m.bottom = r, n = o; n--;) d(a[n])
            },
            update: function (t) {
              var i, n, e, s, h = u,
                r = 1,
                a = 0,
                o = 1;
              for (h[0] = m; r;) {
                var f = h[a],
                  c = f[no];
                --r, a += 1, c && c !== t ? (n = c.x - t.x, e = c.y - t.y, 0 === (s = Math[Lt](n * n + e * e)) && (n = (Math[W]() - .5) / 50, e = (Math[W]() - .5) / 50, s = Math.sqrt(n * n + e * e)), (i = l * c[Ak] * t[Ak] / (s * s)) < -1e3 && (i = -1e3), i /= s, t.fx = t.fx + i * n, t.fy = t.fy + i * e) : (f.mass || (f[Ak] = 1), n = f.massX / f[Ak] - t.x, e = f.massY / f[Ak] - t.y, 0 === (s = Math.sqrt(n * n + e * e)) && (n = (Math[W]() - .5) / 50, e = (Math[W]() - .5) / 50, s = Math[Lt](n * n + e * e)), (f.right - f[Jt]) / s < .8 ? ((i = l * f[Ak] * t[Ak] / (s * s)) < -1e3 && (i = -1e3), i /= s, t.fx = t.fx + i * n, t.fy = t.fy + i * e) : (f[Ok][0] && (h[o] = f[Ok][0], r += 1, o += 1), f[Ok][1] && (h[o] = f.quads[1], r += 1, o += 1), f[Ok][2] && (h[o] = f[Ok][2], r += 1, o += 1), f[Ok][3] && (h[o] = f.quads[3], r += 1, o += 1)))
              }
            }
          }
        }()))[MA](this[WP][Gk], -this.repulsion * this[Hk] * this[Hk]), n) c[SL](n[e]);
      if (this.elastic) {
        var u = this[WP][Nv];
        for (var e in u) XX[m](this, u[e])
      }
      return this._n2(t)
    },
    _n2: function (t) {
      var i = this[WP][Xk],
        n = (this[WP].currentEnergy, this.layoutDatas.nodes),
        e = (t = this[tk], 0),
        s = this._jH;
      for (var h in n) {
        var r = n[h],
          a = r.fx / r[Ak],
          o = r.fy / r[Ak],
          f = r.vx += a * t,
          c = r.vy += o * t;
        r.x += f * t, r.y += c * t, e < i && (e += 2 * (f * f + c * c)), r.fx = 0, r.fy = 0, r.vx *= s, r.vy *= s
      }
      return i <= (this.layoutDatas.currentEnergy = e)
    }
  }, GC(WX, PX), KB.SpringLayouter = WX;
  var UX = function (t) {
    this[ZR] = t
  };

  function YX(i, n, e, s, h, r) {
    if (n instanceof cB) return i(n, e, s, h, r), n;
    if (n instanceof BH) {
      var a = new LN;
      n[fv].forEach(function (t) {
        n[dO](t) && (t._j8() && t._iD && t[p]() ? t[Jv] && (t[Jv][eA] = !1) : a.add(t))
      }), n = a
    } else if (Array.isArray(n)) n = new LN(n);
    else if (!(n instanceof LN)) throw new Error(Vk);
    return (o = n, c = new LN, o[At](function (t) {
      var i, n;
      t instanceof UG && (n = !1, t[Qk](function (t) {
        if (o[jt](t) && !t[Ad]()) return !(n = !0)
      }), n ? !f && (i = !1, t.forEachOutEdge(function (t) {
        if (o[jt](t) && !t[Ad]()) return !(i = !0)
      }), i) && (f = t) : c.add(t))
    }), c[Tt]() && f && c.add(f), n = c).forEach(function (t) {
      i(t, e, s, h, r)
    }), n;
    var o, f, c
  }
  UX[_] = {
    oldLocations: null,
    _fS: null,
    duration: 700,
    animationType: jB[Wk],
    _8E: function (t) {
      if (this._fS = t, this.oldLocations = {}, t)
        for (var i in t) {
          var n = t[i][UR];
          this[Uk][i] = {
            x: n.x,
            y: n.y
          }
        }
    },
    setLocation: function (t, i, n) {
      t[yO](i, n)
    },
    forEach: function (t, i) {
      for (var n in this[ZR]) {
        var e = this[Uk][n],
          s = this[ZR][n];
        t[m](i, e, s)
      }
    },
    _lK: function (h, t, i, n) {
      this[At](function (t, i) {
        var n = i.node,
          e = t.x + (i.x - t.x) * h,
          s = t.y + (i.y - t.y) * h;
        this[yO](n, e, s)
      }, this)
    },
    stop: function () {
      this[Yk] && this[Yk]._n3()
    },
    start: function (t) {
      this._o8nimate ? (this[Yk]._n3(), this._o8nimate._jK = this[oS], this._o8nimate[jk] = this[jR], this._o8nimate[Zk] = this[Zk]) : this[Yk] = new ZB(this._lK, this, this[oS], this[jR]), this[Yk]._m3(t)
    }
  }, TN(UX.prototype, {
    locations: {
      get: function () {
        return this._fS
      },
      set: function (t) {
        this._fS != t && this._8E(t)
      }
    }
  });
  var jX = function (t, i, n, e, s) {
      return YX(QX, t, i, n, e, s)
    },
    ZX = function (t, i, n, e, s) {
      return YX(KX, t, i, n, e, s)
    };
  qG.prototype.forEachByTopoDepthFirstSearch = function (t, i, n, e) {
    jX(this, t, i, n, e)
  }, qG[_].forEachByTopoBreadthFirstSearch = function (t, i, n, e) {
    t instanceof Object && 1 == arguments[N] && (i = t[Ui]), ZX(this, t, i, n, e)
  }, KB.forEachByTopoDepthFirstSearch = jX, KB[Kk] = ZX;
  var QX = function (t, i, n, e, s, h, r, a) {
    ! function i(n, e, s, h, r, a, o, t) {
      n[zk] = a, h || e.call(s, n, t, o), VX(n, function (t) {
        i(t, e, s, h, r, a, o + 1, n)
      }, t, r, a), h && e.call(s, n, t, o)
    }(t, i, n, e, s, {}, 0)
  };

  function VX(n, e, s, t, h) {
    t ? n[nv](function (t) {
      var i = t[Jk](n);
      i != s && i._marker != h && e(i, n)
    }, this, !0) : n[qk](function (t) {
      var i = t.toAgent;
      i != s && i[zk] != h && e(i, n)
    })
  }
  var KX = function (t, i, n, e, s) {
    ! function t(i, e, s, h, r, a, o) {
      var f, c = i.length;
      i.forEach(function (t, i) {
        var n = t.v;
        n._marker = a, h || e[m](s, n, t[tC], o, i, c), VX(n, function (t) {
          f = f || [], t._marker = a, f.push({
            v: t,
            _from: n
          })
        }, n, r, a)
      }), f && t(f, e, s, h, r, a, o + 1), h && i.forEach(function (t, i) {
        e[m](s, t.v, t._from, o, i, c)
      })
    }([{
      v: t
    }], i, n, e, s, {}, 0)
  };
  KB[iC] = MN, KB.log = SN, KB[Za] = DN, KB[nC] = function (t) {
    u[it] && console.trace(t)
  }, KB[eC] = zC, KB[sC] = KC, KB[hC] = tN, KB.isGecko = iN, KB[rC] = nN, KB[aC] = sN, KB[oC] = eN, KB[fC] = hN, KB.DefaultStyles = TH, KB.Defaults = IN, KB[SO] = oH, KB[cC] = zB, KB.Graphs = g$, KB.Graph = BH, KB.BaseUI = nH, KB.ElementUI = gH, KB[uC] = wH, KB.EdgeUI = MH, KB.LabelUI = mH, KB[_C] = xH, KB[lC] = ZG, KB[dC] = o$, KB[vC] = jF, KB[bC] = wX, KB[yC] = NG, KB[OT] = UG, KB.Edge = GG, KB[gC] = qG, KB[EC] = GX, KB.TreeLayouter = LX, KB[T] = H_;
  var zX = xC;
  return KB[mC] = pC, KB[T_] = MC, KB[wC] = "Copyright © 2020 Qunee.com", KB.css = gB, KB[TC] = {
    draw: function (t, i) {}
  }, SN = function () {}, KB.publishDate = OC, KB
}(window, document);